使用问号占位符的Python 3 MySQL

时间:2018-10-22 07:55:24

标签: mysql python-3.x pymysql

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

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

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

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

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_()

2 个答案:

答案 0 :(得分:1)

以下是如何使用PyMySQL进行此操作的示例:

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

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

答案 1 :(得分:1)

也许这篇文章对您有帮助,虽然它很老,但仍然是有效的AFAIU,我发现它给了我很好的概述: What does a question mark represent in SQL queries?