Я знаю, что могу сделать это вручную, используя sqlalchemy и pandas
dbschema ='myschema'
engine = create_engine('postgresql://XX:YY@localhost:5432/DB',
connect_args={'options': '-csearch_path={}'.format(dbschema )})
df = psql.read_sql('Select * from myschema."df"', con = engine)
Но возможно ли сделать цикл и получить все таблицы?
Я пробовал что-то вроде
tables = engine.table_names()
print(tables)
['A', 'B']
for table in tables :
table = psql.read_sql('Select * from myschema."%(name)s"', con = engine, params={'name' : table})
Я получаю это сообщение:
ЛИНИЯ 1: выберите * из myschema.'A '
Я полагаю, что проблема вызвана моими цитатами, но я не уверен.
РЕДАКТИРОВАТЬ: Итак, я попробовал пример здесь: Передача имени таблицы в качестве параметра в psycopg2
from psycopg2 import sql
try:
conn = psycopg2.connect("dbname='DB' user='XX' host='localhost' password='YY'")
except:
print ('I am unable to connect to the database')
print(conn)
cur = conn.cursor()
for table in tables :
table = cur.execute(sql.SQL("Select * from myschema.{}").format(sql.Identifier(table)))
Но мои таблицы 'Нет, так что я делаю что-то не так, но не вижу, что.