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?
我正在寻找一种方法,将列表中的值放入准备好的 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?