任何人都可以建议我如何处理Postgres数据库中带有'/'等字符的字段名称。我的数据库有一个称为CD / CSD的字段(列标题),当我尝试对该字段运行查询时,我只会收到错误消息。另外,如果我在名称两边加上单引号,则不会收到错误消息,但运行查询时不会返回任何内容。任何帮助将不胜感激。这是我的代码:
import pandas as pd
import numpy as np
import psycopg2
from sqlalchemy import create_engine # database connection
engine = 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,))
答案 0 :(得分:0)
此外,如果我在名称两边加上单引号,我不会收到错误消息,但是运行查询时不会返回任何内容。
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]