我们的参数化查询

时间:2012-06-11 15:58:37

标签: python mysql database

如果有人能告诉我是否可以在oursql(一个用于与MySQL数据库交互的python模块)中使用带有命名占位符的参数化查询,我将不胜感激。

例如,我尝试了一种可以与sqlite3一起使用的查询

c.execute('''select * from records where id=:id''', {"id": 2})

它不起作用。我在语法中得到了一个ProgrammingError。我想知道在oursql中是否有另一种方法可以做到这一点。

如果在oursql中无法实现,您是否知道另一个可用于与MySQL数据库交互的python模块,该数据库允许使用命名占位符进行参数化查询。

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

我们的自己的文档说它使用了qmark notation,我认为这种格式与这种格式不兼容。您正在寻找支持“pyformat”的数据库API。 (参见“paramstyle”下的DB API specification。)

我的经验是MySQLdb,它支持“pyformat”paramstyle,可以在其中编写查询:

c.execute("""SELECT * FROM records WHERE id = %(id)s""", {"id": 2})