You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否使用Pony ORM并将模型拆分至单独文件?含项目结构示例

Pony ORM 分模块项目结构实现方案

完全可以采用你提出的分层项目结构来使用Pony ORM,以下是具体实现步骤:

1. 配置model目录的初始化文件

在model/__init__.py中创建全局的Database实例,并导入所有实体类,确保Pony能识别这些实体:

from pony.orm import Database

# 初始化Database对象
db = Database()

# 导入所有实体类
from .person import Person
from .category import Category

2. 编写各实体类文件

model/person.py

从model模块导入db实例,定义Person实体:

from . import db

class Person(db.Entity):
    name = db.Required(str)
    # 按需添加其他字段、关系映射

model/category.py

同样导入db实例,定义Category实体:

from . import db

class Category(db.Entity):
    name = db.Required(str)
    # 按需添加其他字段、关系映射

3. 入口文件start.py中完成数据库绑定与映射

在项目入口文件中,绑定数据库并生成映射关系:

from pony.orm import sql_debug, db_session
from model import db, Person

# 可选:开启SQL调试,开发阶段便于查看SQL语句
sql_debug(True)

# 绑定数据库(以SQLite为例,其他数据库配置可替换对应参数)
db.bind(provider='sqlite', filename='database.sqlite', create_db=True)

# 生成数据库表映射,create_tables=True会自动创建不存在的表
db.generate_mapping(create_tables=True)

# 示例:测试数据库操作
if __name__ == '__main__':
    with db_session:
        # 创建一条Person记录
        Person(name="Alice")
        print("数据插入成功")

关键注意事项

  • 所有实体类必须继承自同一个db.Entity,也就是model模块中初始化的db实例
  • model/__init__.py必须导入所有实体类,否则Pony无法识别这些实体并生成表结构
  • 任何数据库操作都必须在db_session上下文(或装饰器)中执行

内容的提问来源于stack exchange,提问作者UndoingTech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 20:12:43