我尝试使用以下代码连接到我们的内部数据库:
engine = create_engine('postgresql+psycopg2://{user}:{passw}@{host}:{port}/{db}'.format(
user=config3.CANVAS_USERNAME,
passw=config3.CANVAS_PWD,
host=config3.CANVAS_BOUNCER,
port=config3.CANVAS_PORT,
db='cluster17dr'
))
metadata = MetaData()
metadata.reflect(bind=engine)
print(metadata.tables)
我唯一的结果是一个名为' spatial_ref_sys'的表,我假设它是某种元数据。我知道我的登录信息是正确的,因为这非常有效:
with ppg2.connect(
database='cluster17dr',
user=config3.CANVAS_USERNAME,
password=config3.CANVAS_PWD,
host=config3.CANVAS_BOUNCER,
port=config3.CANVAS_PORT) as conn:
cur = conn.cursor()
sql = 'SELECT * FROM canvas.switchman_shards LIMIT 10'
cur.execute(sql)
res = cur.fetchall()
print(res)
关于使用SQLAlchemy在我的连接中缺少什么的任何想法?
答案 0 :(得分:1)
默认情况下,如果未指定模式名称,SQLAlchemy将仅为您提供默认模式下的表。如果要反映默认架构以外的架构中的表(在PostgreSQL中默认为public
),则需要将schema
关键字指定为.reflect()
:
metadata.reflect(..., schema="canvas")