如果有人能告诉我是否可以在oursql
(一个用于与MySQL数据库交互的python模块)中使用带有命名占位符的参数化查询,我将不胜感激。
例如,我尝试了一种可以与sqlite3一起使用的查询
c.execute('''select * from records where id=:id''', {"id": 2})
它不起作用。我在语法中得到了一个ProgrammingError。我想知道在oursql
中是否有另一种方法可以做到这一点。
如果在oursql
中无法实现,您是否知道另一个可用于与MySQL数据库交互的python模块,该数据库允许使用命名占位符进行参数化查询。
感谢您的帮助。
答案 0 :(得分:4)
我们的自己的文档说它使用了qmark notation,我认为这种格式与这种格式不兼容。您正在寻找支持“pyformat”的数据库API。 (参见“paramstyle”下的DB API specification。)
我的经验是MySQLdb,它支持“pyformat”paramstyle,可以在其中编写查询:
c.execute("""SELECT * FROM records WHERE id = %(id)s""", {"id": 2})