Я запускаю хранимую процедуру из Python, которая выполняет запрос SELECT в базе данных MYSQL, чтобы определить, существует ли запись или нет.cursor.fetchone() возвращает значение, которого нет в базе данных
После этого я использую cursor.fetchone(), чтобы сравнить результат запроса со значением переменной. Однако, когда я проверяю значение, содержащееся в результате запроса, оно совпадает с параметром, который я передал с запросом, даже если эта запись не существует в базе данных.
Обязательно это должно быть None
?
Для записи параметр, который я передаю, имеет направление IN и является int.
Я проверил остальную часть SO, и все проблемы, подобные этим, которые я видел, являются обратными тому, что я получаю! Я также исследовал cursor.fetchone(), чтобы убедиться, что я правильно его использую, и кажется, что я есть.
Любая помощь была бы принята с благодарностью!
таблица Я запрашивая
ID = 1
Name = Имя
хранимая процедура
CREATE PROCEDURE `storedprocedure2`(IN `param` INT) NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER
SELECT `This`
FROM `That`
WHERE `This` = param
вызов запроса
def loadintodatabase(self, connection, args):
value1 = args[0]
value2 = args[1]
value3 = args[2]
value4 = args[3]
value5 = args[4]
value6 = args[5]
value7 = args[6]
value8 = args[7] #this is a list
value8length = len(value8)
value9 = args[8] #this is also a list
value9length = len(value9)
id = 0
i = 0
idlist = [] #this is not related to the id variable
idlistincrement = 0
if value 8 != []:
while i < value8length:
cursor = connection.cursor()
cursor.callproc('storedprocedure1', (value8[0], value8[1], value8[2])) #Inserts into a different table
idlist.append(value8[0])
cursor.close()
connection.commit()
i += 1
i = 0
if value3 != 0 and value4 is not None:
cursor = connection.cursor()
cursor.callproc('storedprocedure2', (param,)) #lets say param holds 11 as an int, sproc is a select query
result = cursor.fetchone() #result should be None but instead is (11L,)
if result is None:
id = None
else:
id = result[0]
if id is None:
cursor = connection.cursor()
cursor.callproc('storedprocedure3', (value3, value4)) #sproc inserts into the table I just selected the id from
cursor.close()
connection.commit()
Я могу видеть backquotes вместо кавычек в хранимой процедуре. Являются ли они простым типом? –
Нет? Я использую phpmyadmin для просмотра моей базы данных, и она отмечает столбцы, таблицы и базы данных в обратных окнах. – Supergoat21
Пожалуйста, покажите свой полный код * python *, так как это, скорее всего, будет содержать ответ. Также покажите все определение хранимой процедуры. Есть ли причина, по которой вам понадобится хранимая процедура в этом простом случае? Почему не просто: query = 'SELECT ID из таблицы, где ID =% s' и curse.execute (query, (param,))? – JJC