Привет, я пытаюсь использовать подготовленные команды mysql в django.Django mysql подготовленные заявления
Я сделал следующий класс:
class PreparedStatement(object):
def __init__(self,name,query):
self.name = name
self.query = query
self.vars = []
self.prepare()
def setVar(self,name,var):
name = "@%s" % name
if name not in self.vars:
self.vars.append(name)
SQL = "SET %s = " % (name)
self.__executeQuery(SQL+" %s;",var)
def prepare(self):
SQL = "PREPARE %s FROM " % self.name
self.__executeQuery(SQL + " %s ;", self.query)
def execute(self):
SQL = "EXECUTE %s " % self.name
if len(self.vars):
params = ""
for var in self.vars:
params += var + ", "
params = params[:-2]
SQL += "USING %s " % params
result = self.__executeQuery(SQL)
self.vars = []
return result
def __executeQuery(self,query,*args):
cursor = connection.cursor()
if args:
cursor.execute(query,args)
else:
cursor.execute(query)
return cursor
и я использовать его как это:
getDiscountsById = PreparedStatement("getDiscountsById","""SELECT * FROM table
WHERE id = ? LIMIT 1""")
getDiscountsById.setVar("id",5)
result = getDiscountsById.execute()
Это работает нормально для первой загруженной страницы, но после изменения URL или перезагрузки страницы MySQL возвращает подготовленные инструкция не найдена ошибка.
Где может быть проблема? Есть ли решение?
Спасибо за ответы и извините за мой английский: D
Почему вы используете подготовленные заявления? Это для повышения производительности или для написания необработанного SQL без воздействия на SQL-инъекции? – Thomas
@Thomas Это школьный ассистент, я не могу использовать ORM, и я должен использовать подготовленные состояния – ChuckBorris