gpt4 book ai didi

python - SQLAlchemy 类跨文件,不创建表

转载 作者:太空宇宙 更新时间:2023-11-03 14:01:59 26 4
gpt4 key购买 nike

我正在尝试使用 SQLAlchemy 创建一个应用程序。只要我只有一个文件和一个类,它就可以正常工作。现在我想在不同的文件中有多个类/表。我偶然发现this问题,并尝试按照那里的建议去做:我现在有三个文件

基础.py

from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()

盲目.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

这可以工作,但是,它不会按预期在数据库中创建表。当我尝试向表中插入内容时,出现错误“表不存在”。有人可以告诉我我在这里做错了什么吗?

最佳答案

问题是我没有在任何地方导入 Blinds 和 Datum 的类定义,因此它们没有被评估!在将它们分成不同的文件之前,我已将它们导入到 Base。感谢@IljaEverilä 的回答!

关于python - SQLAlchemy 类跨文件,不创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49178659/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com