【发布时间】:2022-11-30 16:25:49
【问题描述】:
我将尝试按顺序解释,以便我的问题清楚。 根据课程执行的简化代码:
engine = create_engine(...)
session = (...)
Base = declarative_base()
class <someTable>(Base):
...
Base.metadata.create_all(bind=engine)
在这种情况下,一切正常。正在创建数据库中的表。 接下来我要分很多(根据)由位于同一文件夹“模式”中的不同文件组成。现在,启动应用程序后,不会创建表,因为在“create_all”之前没有明确定义“class (Base)”。 我认为如果在注册了特定“类(Base)”的单独文件中导入“Base”,那么这就足够了。 首先想到的是在每个 CRUD 操作之前放置一个“if”条件——如果表不存在,则“create_all”。 首先想到的是在每个 CRUD 操作之前放置一个“if”条件——如果表不存在,则“create_all”。
该项目的文件结构如下所示:
|project
|
|-|utils
| |-db_api
| |-|db_api
| |-|schemas
| |-__init__.py
| |-<someTable_1>.py #Contains "class <someTable_1>(Base)"
| |-<someTable_2>.py
| |-__init__.py
| |-session.py #there session, Base, and create_all
| |-<some_db_commands>.py
| |-__init__.py
| |-<some_bot_funcs>.py
|-main.py
这是一个简单的训练电报机器人,它使用“/start”命令在 postgres 中创建一个表并在其中写入用户 ID。 我可以通过实现 SQLAlchemy 可操作性来保持类似的文件结构吗?
【问题讨论】:
标签: python python-3.x sqlalchemy orm