我創建了許多我想要保存到數據庫的類。我希望能夠運行具有特定標誌的應用程序來獲取所有這些類,並在我的數據庫中創建相應的表。爲此,我試圖導入這些類,然後調用Base.metadata.create_all(engine)
方法。但是,這是行不通的。同時,當我從每個實際類的文件中調用該表時,將創建這些表。SQLAlchemy,Declarative,PostgreSQL:無法創建表格
我該如何處理創建這些表的任務?我應該嘗試從單個文件/腳本創建它們,還是將該行添加到每個類中?
這裏是我的代碼示例:
1)Item.py
from sqlalchemy import Column, Integer, String, Float
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Item(Base):
__tablename__ = "items"
id = Column(Integer, primary_key=True)
name = Column(String)
def __repr__(self):
return "<~ {} ~> name: {}".format(self.id, self.name)
2)main.py
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
def main():
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
engine = create_engine('postgresql+psycopg2://me:[email protected]/my_first_database', echo=True)
from Item import Item
print(Item)
print(Item.__table__)
Base.metadata.create_all(engine)
main()
對不起進口的怪異命令,但我在某處讀取導入你的課程和基地事宜的順序,所以我試着玩弄它。
我發現的一件事是,如果我說'import Item',然後'Item .__ base __。metadata.create_all(引擎)'一切正常。但它看起來有點骯髒的黑客。我認爲每次創建Base時Base都是一樣的。 – Ibolit