回答
所有這些表都收集在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)。 –