Как передать локальную переменную mysql в python? - PullRequest
0 голосов
/ 25 июня 2019

Я хотел бы передать локальную переменную из 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: Почему бы просто не читать прямо из таблицы?Мне нужно заблокировать таблицу и прочитать значение, прежде чем она будет разблокирована.Если я прочитаю после разблокировки, я могу получить значение, которое было изменено другим сеансом.

...