Я ожидал бы отсюда ...
https://mariadb.com/kb/en/user-defined-variables/ и здесь ... https://dev.mysql.com/doc/refman/5.7/en/user-variables.html
, что это будет работать (от python) ...
conn.execute("select * from db.`My Table` where `my id` = @my_id",{'@my_id':54321}).fetchall()
но это не так. Я могу заставить его работать, используя синтаксис «% s» и передавая список, но мне нужны именованные параметры.
Должен ли я сначала запустить
SET @my_id = 54321
? Нужно ли использовать сохраненный про c?
Пока оно находится на том же соединении, вы можете выполнить SET @my_id = 54321, а затем select * from db.My Table where my id = @my_id. Для этого передача значения в качестве параметра в .execute () не требуется.
select * from db.My Table where my id = @my_id