有没有办法在sqlite3中设置查询的占位符? 我有一些与数据库一起工作的函数,如果它们可以使用mysql和sqlite,它会更令人满意. 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 }
(编辑:好传媒网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|