能否使用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
相关产品推荐
相关产品推荐

