use*_*245 6 python sql oracle sqlalchemy
我正在使用SQLAlchemy对Oracle数据库运行SQL查询.我有读取数据库的权限,但我拥有的用户并不拥有我正在使用的任何表.
数据库定期更新,因此我希望使用反射,而不是明确列出MetaData.我发现了这个问题,它描述了一个类似于我所拥有的问题.但是,我没有办法改变表的所有权,也没有办法以任何方式修改数据库.我只是有读取权限.
如果我没有这些表的所有权,有没有办法在SQLAlchemy中反映Oracle表?
(编辑)
示例代码:
engine = create_engine('ORACLE CONNECTION STRING')
metadata = MetaData()
students = Table('students', metadata, autoload=True, autoload_with=engine)
Run Code Online (Sandbox Code Playgroud)
我收到一个例外 sqlalchemy.exc.NoSuchTableError: students
但是,当我运行以下内容时:
results = engine.execute('SELECT * FROM students')
for r in results:
print(r)
Run Code Online (Sandbox Code Playgroud)
我从表中收到了我期望的输出,这是每行所有字段的元组.
因此,我试图反映所有这些,而不是试图反映一个表:
metadata.reflect(bind=engine)
print(metadata.tables)
Run Code Online (Sandbox Code Playgroud)
输出是immutabledict({}).
所以基本上没什么.所有这些表都由用户A拥有,因为我以只读用户B登录.
如果您指定schema要定位的(帐户),您可能会更好地反映其他人的表:
metadata.reflect(bind=engine, schema='userA')
Run Code Online (Sandbox Code Playgroud)
这样,您将反映属于"userA"的所有可读表.不过,我不确定为什么你能查询学生engine.execute.
| 归档时间: |
|
| 查看次数: |
1252 次 |
| 最近记录: |