Python SQL Select 中间有变量的语法

Python SQL Select Syntax with variable in between

我有一个 SQL 语句适用于 mysql:

SELECT * FROM `ps_message` WHERE `id_order` = 111 ORDER BY id_message asc LIMIT 1

Python中的以下语句有什么问题:

cursor2.execute("SELECT * FROM ps_message WHERE id_order='%s'" % order["id_order"] " ORDER BY id_message asc LIMIT 1")

Python 中的语法应该如何工作?

您在字符串格式设置方面存在语法错误。应该是:

cursor2.execute("SELECT * FROM ps_message WHERE id_order='%s' ORDER BY id_message asc LIMIT 1" % order["id_order"])

使用 format() 也优于旧式字符串格式。 Read more about it here.

将订单号作为查询参数传递。 例如

cursor2.execute("SELECT * FROM ps_message WHERE id_order=%s ORDER BY id_message asc LIMIT 1", [ order["id_order"] ])

请注意,在使用查询参数时,不要在 %s 两边加上引号。

建议使用此方法以避免 sql 注入攻击的风险。 如果有很多查询,它也应该更有效率。

https://docs.python.org/2/library/sqlite3.html

http://pymssql.org/en/stable/pymssql_examples.html