我想在 python 中构造一个 sqlite3 数据库查询,然后将它写入一个文件。
我是 python 的 sql 数据库接口(interface)的 super 粉丝,AFAICT 包装了所有你可能会用一个漂亮的小 '?' 弄乱的调用。为您清理/转义字符串的参数,但这不是我想要的。我实际上只想准备和转义一个 sql 语句 - 为此,我需要转义/引用任意字符串。
例如:
query = "INSERT INTO example_table VALUES ('%s')",sqlite_escape_string("'")
所以查询应该包含: “插入 example_table VALUES ('''')”
请注意,它插入了一个额外的 ' 字符。
PHP 的等价物是 sqlite_escape_string() perl 的等价物是 DBI 的 quote() 我感觉Python的整体界面更好,但我恰好需要查询,pre-exec。
请您参考如下方法:
当您使用 SQLite 时,它不会将参数化查询转回文本。它有一个 api(“绑定(bind)”)并单独存储值。只需更改绑定(bind),就可以使用不同的值重用查询。这是语句缓存的基础。因此,在执行您描述的操作时,您不会从 python/sqlite 获得任何帮助。
您没有说明您为什么要这样做。通常的原因是某种形式的追踪。我的备用 Python/SQLite 界面 (APSW) 提供了简单的跟踪功能——您甚至不必触摸代码即可使用它:
https://rogerbinns.github.io/apsw/execution.html#apsw-trace
SQLite 还有一个授权 API,可以让你否决语句执行的操作。这还有一个副作用,即告诉您语句最终将执行哪些操作。
