- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想在 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,可以让你否决语句执行的操作。这还有一个副作用,即告诉您语句最终将执行哪些操作。
关于 python /SQLITE : How do I escape commands/strings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8697330/
我是一名优秀的程序员,十分优秀!