回答
所有这些表都收集在sqlalchemy元数据对象的tables
属性中。以获得这些表名称的列表:
>>> metadata.tables.keys()
['posts', 'comments', 'users']
如果您使用声明性扩展,那么您可能不是自己管理元数据。幸运的是,元数据仍然存在于基类,
>>> Base = sqlalchemy.ext.declarative.declarative_base()
>>> Base.metadata
MetaData(None)
如果你正在试图找出哪些表存在于数据库中,即使在你还没有还跟SQLAlchemy的了解尚的人,那么你就可以使用表反射。然后,sqlalchemy将检查数据库并使用所有缺少的表更新元数据。
>>> metadata.reflect(engine)
您创建表的元数据对象在字典中具有该元数据对象。
metadata.tables.keys()
有一种方法在engine
对象中获取表名列表。 engine.table_names()
我得到 '回溯(最近最后一次通话): 文件 “dedup_jobs.py” 31行,在
我一直在寻找这样的事情:
from sqlalchemy import create_engine
eng = create_engine('mysql+pymysql://root:[email protected]:3306', pool_recycle=3600)
q = eng.execute('SHOW TABLES')
available_tables = q.fetchall()
它的执行,并返回所有的表。
更新:
Postgres的:
eng = create_engine('postgresql+psycopg2://root:[email protected]/
q = eng.execute('SELECT * FROM pg_catalog.pg_tables')
这不是跨平台的。它只适用于mysql,它不会与其他数据库引擎一起工作。 –
@EdwardBetts你是对的,你想知道什么数据库引擎? – jmunsch
反映在一旦所有表让你太获取隐藏的表名。我创建了一些临时表和他们用
meta = MetaData()
meta.reflect(bind=myengine)
for table in reversed(meta.sorted_tables):
print table
from sqlalchemy import create_engine
engine = create_engine('postgresql://use:[email protected]/DBname')
print (engine.table_names())
出现了我解决同样的问题,发现这个职位。一些试运行结束后,我会建议使用下面列出的所有表:(由zerocog提及)
metadata = MetaData()
metadata.reflect(bind=engine)
for table in metadata.sorted_tables:
print(table)
这是直接表处理有用,我觉得值得推荐。
,并使用下面的代码来获取表名:
for table_name in engine.table_names():
print(table_name)
“metadata.tables”提供了字典的表名和表对象。这对快速查询也很有用。
- 1. sql alchemy列值依赖于其他表
- 2. 获取列表SQL
- 3. 访问SQL:获取表单的列表
- 4. 如何用SQL Alchemy(PostgreSQL)锁定表?
- 5. SQL Alchemy查询多个表格
- 6. 获取列表
- 7. SQL Alchemy Check Connection
- 8. 获取列表
- 9. SQL Alchemy覆盖==
- 10. Android获取表格列表
- 11. SQL Alchemy奇怪的行为加入同一表中的多列
- 12. 使用Conjuctions查询SQL Alchemy
- 13. SQL Server - 获取表
- 14. 获取列表
- 15. 获取列表
- 16. 获取列表
- 17. 获取列表
- 18. 获取列表
- 19. 获取列表
- 20. 获取列表
- 21. SQL Alchemy和CX_Oracle Reflection问题
- 22. SQL集合函数获取列表
- 23. SQL获取项目不在列表中
- 24. SQL查询 - 如何获取列表
- 25. SQL:获取表列的公共值
- 26. 获取网络SQL服务器列表
- 27. 从SQL Server获取数据库列表
- 28. 通过列表框获取SQL数据
- 29. SQL从分页获取列表
- 30. 获取表列在SQL炼金术(1.0.4)
从版本0.8开始不推荐使用:请使用sqlalchemy.schema.MetaData.reflect()方法。注意,使用'engine = sqlalchemy.create_engine('mysql:// user:password @ host/db_name')''而不是'“mysql:// user:password @ host”'和'engine.execute(“use db_name “)'。 –
@XuJiawan:我不确定哪个东西在这里被弃用,我不确定哪个方法在暗示它是不是'sqlalchemy.MetaData.reflect()'? – SingleNegationElimination
@IfLoop:我从[sqlalchemy文档]找到它(http://docs.sqlalchemy.org/en/rel_0_9/core/metadata.html#sqlalchemy.schema.MetaData.params.reflect)。 –