Python 3 MySQL 使用问号占位符

Python 3 MySQL using question mark placeholders

我正在寻找一种方法,将列表中的值放入准备好的 SQL 字符串中,该字符串以问号作为占位符。我以前在 PyQT 中使用过它,但我在那里使用了 bindValue 函数。使用 pymysql 似乎没有这样的功能。

这是我准备的 SQL 字符串类型的示例:

INSERT INTO my_table (`Column1Name`, `Column2Name`, `Column3Name`) VALUES (?,?,?);

然后我有一个要插入(或 link 到)问号占位符的值列表。

my_values_list['string_1', '3', 'anothervalue']

就像我说的,我以前在 PyQT 中使用过这种方法,所以我知道这个 '?'占位符方法有效,但没有 bindValue 函数,我看不到如何使用 pymysql 让它工作。

下面是我如何使用 PyQT 的 QSqlQuery bindValues 函数让它工作(如果有帮助的话),其中 query.exec_() 执行 SQL 字符串:

if my_values_list:
        [self.query.bindValue(i, my_values_list[i]) for i in range(len(my_values_list))]
self.query.exec_()

这是一个如何使用 PyMySQL 执行此操作的示例:

query = 'INSERT INTO my_table (Column1Name, Column2Name, Column3Name) VALUES (%s, %s, %s);'
cur.execute(query, ('string_1', '3', 'anothervalue', ))

? 在这里不是有效的占位符,但 %s 是有效的。

也许这个 post 对你有帮助,它很旧但仍然大部分有效 AFAIU,我发现它给了我一个很好的概述: What does a question mark represent in SQL queries?