Я хотел бы передать локальную переменную из MySQL в python, используя модуль MySQLdb.
Я знаю, что есть много ответов об обратном (от python до mysql), и я не ищу этого.
Я также знаю, как получить любые данные изтаблица с использованием
SELECT data_name
FROM table_name
Для получения результата можно выбрать затронутые строки.
Однако запуск SELECT @my_variable
из python возвращает пустой результат.
LOCK TABLES `usedID` WRITE;
/...*Do some stuff here*/
SELECT `lastaugID` FROM `usedID` INTO @ID;
UNLOCK TABLES;
SELECT @ID;
Выполнение приведенного выше фрагмента из mysql возвращает ожидаемый результат:
+-------+
| @ID |
+-------+
| 58404 |
+-------+
1 row in set (0.00 sec)
Но переданное значение в python - пустой список.
Вот фрагмент кода Python, выполняющий SQL-запрос:
def write_sql(self, sqlreq, sqlreqdict):
if self.sockname:
con = MySQLdb.Connect( unix_socket=self.sockname, user=self.sqluser,
passwd=self.sqlpasswd, db=self.sqldb,
cursorclass=MySQLdb.cursors.DictCursor );
else:
con = MySQLdb.Connect( host=self.sqlhost, user=self.sqluser,
passwd=self.sqlpasswd, db=self.sqldb,
cursorclass=MySQLdb.cursors.DictCursor );
cursor = con.cursor();
try:
cursor.execute( sqlreq, sqlreqdict );
except MySQLdb.IntegrityError, val:
html.print_errmsg_exit( "Database integrity error: " + str(val) );
res = cursor.fetchall();
del cursor;
con.commit();
con.close();
# Re-open the read-only cursors of the DB, to be able to process
# a request to read the just-created file:
self.init_db();
return res
PS: Почему бы просто не читать прямо из таблицы?Мне нужно заблокировать таблицу и прочитать значение, прежде чем она будет разблокирована.Если я прочитаю после разблокировки, я могу получить значение, которое было изменено другим сеансом.