任何人都可以告诉我如何处理 postgres 数据库中具有诸如“/”之类的字符的字段名称。我的数据库有一个名为 CD/CSD 的字段(列标题),当我尝试在该字段上运行查询时,我只会收到错误消息。此外,如果我在名称周围加上单引号,则不会收到错误消息,但在运行查询时不会返回任何内容。任何帮助将不胜感激。这是我的代码的样子:import pandas as pdimport numpy as npimport psycopg2from sqlalchemy import create_engine # database connectionengine = create_engine('postgresql://postgres:xxxxx@localhost:xxx/My_Database')province_selected = raw_input("Type name of province desired: ")df = pd.read_sql("SELECT * FROM my_table Where CD/CSD=%s", engine, params=(province_selected,))
1 回答
牛魔王的故事
TA贡献1830条经验 获得超3个赞
此外,如果我在名称周围加上单引号,则不会收到错误消息,但在运行查询时不会返回任何内容。
SQL 中的单引号表示字符串。当你说,
Where 'CD/CSD'=%s
您的意思%s
是,字面意思是 6 个字符的字符串CD/CSD。
我不确定 Postgres,但我敢打赌它遵守 SQL 标准来引用identifier,这就是列名。即(有点奇怪,但这是 SQL),标识符用双引号引起来。而且,是的,这就是 Python 有三重引号的原因:
df = pd.read_sql('''SELECT * FROM my_table Where "CD/CSD"=%s''', [etc]
添加回答
举报
0/150
提交
取消