psycopg2 как вызвать базу данных, если имя таблицы начинается с цифр

#python #postgresql #psycopg2

Вопрос:

Я пытаюсь прочитать таблицы из базы данных postgres, но имя таблицы указано в номере, поэтому я продолжаю получать синтаксическую ошибку. Есть какие-нибудь способы решить эту проблему?

 import psycopg2

conn=psycopg2.connect(host='host', dbname='database', user='postgres', password='postgres', port='5432')
cur=conn.cursor()
cur.execute("select* from database.public."123456";")
rows=cur.fetchall()
print(rows)

syntaxError: invalid syntax
 

Ответ №1:

 from psycopg2 import sql    

query = sql.SQL("SELECT * FROM {table}").format(table=sql.Identifier('123456'))
cursor.execute(query)
 

использование целых чисел в качестве имени не очень хорошая идея , см. раздел Форматирование sql в psycopg. ваш запрос не является правильной строкой, поэтому вы получаете синтаксическую ошибку.