作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
有没有办法在 sqlite3 中设置查询的占位符?我有一些与数据库一起工作的函数,如果它们可以同时与 mysql 和 sqlite 一起工作,那就更令人满意了。Mysql 和 Postgres python api 使用 %s 作为占位符,但 sqlite3 使用问号代替。
我正在寻找一种方法来使用相同的占位符,无论数据库引擎如何。
感谢您的帮助。
最佳答案
已更新以修复我之前关于如何使用 paramstyle
global
如果您使用的数据库模块遵循 Python Database API Specification v2.0 ,您可以获得模块全局 paramstyle
,它应该是以下任何一个:
然后您可以使用模块使用的占位符编写 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 }
关于Python sqlite3 占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12184118/
我是一名优秀的程序员,十分优秀!