SQLAlchemy没有找到表,可能的连接问题

时间:2016-04-26 01:21:20

标签: python postgresql sqlalchemy

我尝试使用以下代码连接到我们的内部数据库:

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在我的连接中缺少什么的任何想法?

1 个答案:

答案 0 :(得分:1)

默认情况下,如果未指定模式名称,SQLAlchemy将仅为您提供默认模式下的表。如果要反映默认架构以外的架构中的表(在PostgreSQL中默认为public),则需要将schema关键字指定为.reflect()

metadata.reflect(..., schema="canvas")