【发布时间】:2020-01-28 06:19:37
【问题描述】:
我对“sql.Identifier without quoting”进行了网络搜索,this post 仅相关。它建议使用.format(sql.Identifier。
但是,这种方法在标识符中添加了双引号,据我所知,它不能用于在 PostgreSQL 中不带引号的标识符。正如我在here 中读到的,专家建议不要在 Postgres 中引用标识符。
我在sql.Identifier 中没有看到跳过在the document 中引用的选项以及在psycopg2 的sql 模块中的替代方法。如何以注入安全的方式将 Python 中的 PostgreSQL 用于未加引号的标识符?
添加:我的困惑是由于我在 sql.Identifier 中使用了“public.abc”,正如@klin 的回答中所指出的那样,我应该使用两个标识符。整理后,我看到引号仅用于区分大小写(和/或使用“其他”符号如点的地方)。
【问题讨论】:
-
我认为引用标识符很好。为所有标识符选择一致的大小写并坚持使用。双引号让你诚实。图书馆的行为强化了这一点。我的 2p。
-
@wobr,谢谢。只是不熟悉“public.abc”然后“abc”不是“public”。“abc”,abc,public.abc 有效,只有“public.abc”。
标签: python postgresql psycopg2