我正在尝试使用SQLAlchemy创建一个应用程序。只要我只有一个类有一个文件,它就可以正常工作。现在我想在不同的文件中有多个类/表。我偶然发现了this问题,并尝试按照那里的建议进行操作:我现在有三个文件
base.py
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
blind.py
from sqlalchemy import Column, String
from .base import Base
class Blind(Base):
__tablename__ = 'blinds'
blind = Column(String)
data_processor_uuid = Column(String, primary_key=True)
data_source_uuid = Column(String)
timestamp = Column(String, primary_key=True)
和data.py
from sqlalchemy import Column, Integer, String, Float
from .base import Base
class Datum(Base):
__tablename__ = 'data'
data_source_uuid = Column(Integer, primary_key=True)
sensor_type = Column(String)
timestamp = Column(String, primary_key=True)
value = Column(Float)
我现在想要使用
在db_setup.py中初始化数据库from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from .base import Base
engine = create_engine('sqlite:///test.db', echo=True)
Base.metadata.bind = engine
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
def get_db_session():
return session
但是,它不会按预期在数据库中创建表。当我尝试在表格中插入某些内容时,我收到一条错误消息,表示"表格不存在"。有人能告诉我这里我做错了什么吗?
答案 0 :(得分:1)
问题在于我没有在任何地方导入Blinds和Datum的类定义,所以它们没有被评估!在我将它们分成不同的文件之前,我已将它们导入到Base。感谢@IljaEverilä的回答!