gpt4 book ai didi

Python sqlite3 占位符

转载 作者:IT王子 更新时间:2023-10-29 06:27:47 33 4
gpt4 key购买 nike

有没有办法在 sqlite3 中设置查询的占位符?我有一些与数据库一起工作的函数,如果它们可以同时与 mysql 和 sqlite 一起工作,那就更令人满意了。Mysql 和 Postgres python api 使用 %s 作为占位符,但 sqlite3 使用问号代替。

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

感谢您的帮助。

最佳答案

已更新以修复我之前关于如何使用 paramstyle global

的错误

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

  1. 'qmark' 问号样式, 例如'...WHERE name=?'
  2. 'numeric' 数字,位置样式, 例如'...WHERE name=:1'
  3. 'named' 命名样式, 例如'...WHERE name=:name'
  4. 'format' ANSI C printf 格式代码, 例如'...WHERE name=%s'
  5. '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 }

关于Python sqlite3 占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12184118/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com