我知道我可以使用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'
我想问题是由我的引号引起的,但我不确定。
编辑: 因此,我在这里尝试了该示例:Passing table name as a parameter in 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)))
但是我的桌子“没有”,所以我做错了什么,但看不到。