如何在具有特殊字符的 Postgresql 数据库中调用字段名称?

任何人都可以告诉我如何处理 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,))



慕桂英3389331
浏览 231回答 1
1回答

牛魔王的故事

此外,如果我在名称周围加上单引号,则不会收到错误消息,但在运行查询时不会返回任何内容。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]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python