python – 是否可以停止sqlite将双引号标识符视为字符串?

根据:http://www.sqlite.org/draft/lang_keywords.html

如果你这样做,SQLite3将做你期望的事情:

select "foo" from bar;

但是,如果标识符不存在:

select "non-existant" from bar;

为了将引用的文本视为字符串,它会退回(为了与旧版本兼容).

这会给我带来问题,因为我使用这样的引用列动态创建查询,后一种行为返回无意义结果而不是抛出错误.

我正在编写python代码,并使用包装PEP-249 Python数据库API规范v2.0模块的模块,因此我可以在必要时放入数据库特定的hacks.

我们的后端数据库可能会发生变化(事实上,在某些时候本地测试和生产可能会有所不同),所以我希望尽可能保持SQL本身的标准.

我有什么方法可以:

>停止/关闭此行为
>轻松/可靠地检测到这种情况已发生(并提出我自己的例外,比如说)
>以某种方式解决这个问题(我不认为用非标准的等价物替换sql很容易以安全的方式编程)

解决方法:

如果列名称以表名或别名为前缀,则不能错误解释它们:

SELECT bar."foo", a."baz" FROM bar, blah AS a

处理多个表时,可能需要使用它来避免列名冲突.

相关文章

SQLite架构简单,又有Json计算能力,有时会承担Json文件/RES...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器...
安卓开发,利用SQLite实现登陆注册功能