sqlalchemy.exc.InvalidRequestError: Table 'run_result' is already defined for this MetaDa...

臨時解決辦法:html

在models文件導入db後,加上以下代碼:python

db.metadata.clear()

但解決問題的根本之處仍是在於找到,爲什麼會聲明瞭2次類的定義呢?sql

 

解析:數據庫

table 'roles_users' is already defined for this MetaData instance,意思是說表XX已經定義。這個在於你想幹嗎。app

第一,若是你想刪除舊類並從新生成新的映射類測試

那麼在定義類以前嘗試運行如下行:this

db.metadata.clear()

緣由是第一次經過定義python類聲明SQLAlchemy Mapping時,類的定義將保存到元數據對象中,以防止多個定義映射到同一個表所致使的衝突。當您調用該clear()方法時,您將清除元數據對象在內存中保存的全部表定義,這容許您再次聲明它們。spa

第二,保留你的舊類,而後重啓你的應用程序.net

可使用reflect方法編寫測試以查看錶是否已存在:code

db.metadata.reflect(engine=engine)

其中engine是您使用建立的數據庫鏈接create_engine(),並查看您的表是否已存在,而且只有在未定義表時才定義該類。

 

參考:https://stackoverflow.com/questions/37908767/table-roles-users-is-already-defined-for-this-metadata-instance

 

原文出處:

https://blog.csdn.net/BridgeHong/article/details/88999316

相關文章
相關標籤/搜索