Как вызвать имена полей в базе данных Postgresql, которые имеют специальные символы? - PullRequest
0 голосов
/ 22 февраля 2019

Может кто-нибудь посоветовать мне, как обрабатывать имена полей в базе данных 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,))

1 Ответ

0 голосов
/ 22 февраля 2019

Кроме того, если я ставлю одинарные кавычки вокруг имени, я не получаю сообщение об ошибке, но при выполнении запроса ничего не возвращается.

Одиночные кавычки в SQL означаютстрока.Когда вы говорите,

Where 'CD/CSD'=%s

, вы имеете в виду, что %s - это буквально 6-символьная строка CD / CSD .

Я не уверен насчет Postgres, но держу пари, что он соблюдает стандарт SQL для цитирования идентификатора , то есть имени столбца.А именно (и немного странно, но это SQL) идентификаторы заключаются в двойные кавычки.И да, именно поэтому Python имеет тройные кавычки:

df = pd.read_sql('''SELECT * FROM my_table Where "CD/CSD"=%s''', [etc]
...