正确使用Psycopg2 SQL模块

问题描述

由于语法错误(Maurice Meyer使我意识到)而编辑了问题

我需要保护应用程序免遭SQL注入,因此请使用 Psycopg2 中的 sql 模块。这将生成一个有效的查询:

conn = get_db()
cur = conn.cursor()
with open(fp,'r') as f:
    query = sql.SQL("COPY parts ({fields}) FROM STDIN WITH (FORMAT CSV,DELIMITER ';',ENCODING UTF8)").format(
        fields = sql.SQL(',').join(sql.Identifier(col) for col in cols))
    cur.copy_expert(query,f)

但是我想知道这是否是正确的解决方案。由于生成的查询是:

print(query.as_string(conn))
>>> COPY parts ("asin","name","t_id","supp_pid","acq_price","deposit","ean","m_pid") FROM STDIN WITH (FORMAT CSV,ENCODING UTF8)

但是根据Postgresql docs,标识符应不加引号。 为什么它仍然可以工作?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)