Python sqlite3占位符

前端之家收集整理的这篇文章主要介绍了Python sqlite3占位符前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

有没有办法在sqlite3中设置查询的占位符?
我有一些与数据库一起工作的函数,如果它们可以使用mysqlsqlite,它会更令人满意.
MysqL和Postgres python apis使用%s作为占位符,但sqlite3使用问号代替.

我正在寻找一种方法来使用相同的占位符,无论数据库引擎如何.

谢谢你的帮助.

最佳答案
更新以修复我之前关于如何使用paramstyle全局的错误

如果您使用的数据库模块遵循Python Database API Specification v2.0,则可以获得模块全局参数样式,它应该是以下任何一种:

>’qmark’问号样式,
            例如’…姓名=?’
>’数字’数字,位置风格,
            例如’… WHERE name =:1′
>’命名’命名风格,
            例如’… WHERE name =:name’
>’format’ANSI C printf格式代码,
            例如’… WHERE name =%s’
>’pyformat’Python扩展格式代码,
            例如’… WHERE name =%(name)s’

然后,您可以使用模块使用的占位符来编写sql语句.你可以这样做:

import sqlite3

paramstyle = sqlite3.paramstyle

if paramstyle == 'qmark':
    ph = "?"
elif paramstyle == 'format':
    ph = "%s"
else:
    raise Exception("Unexpected paramstyle: %s" % paramstyle)

sql = "INSERT INTO foo VALUES (%(ph)s,%(ph)s,%(ph)s)" % { "ph" : ph }

猜你在找的MySQL相关文章