Merge pull request 'add code generator and gitignore' (#7) from 张昕浩 into main

Reviewed-on: #7
This commit is contained in:
2026-09-21 02:55:43 +08:00
3 changed files with 62 additions and 0 deletions
+18
View File
@@ -0,0 +1,18 @@
# Python 缓存
__pycache__/
*.pyc
*.pyo
*.pyd
# Python 虚拟环境
.venv/
venv/
env/
# IDE
.idea/
.vscode/
# 系统垃圾
.DS_Store
Thumbs.db
+1
View File
@@ -14,6 +14,7 @@ IP:localhost
直接 from core.database import Base ,否则会出现 Base 不一致的情况,导致数据库无法创建表。 直接 from core.database import Base ,否则会出现 Base 不一致的情况,导致数据库无法创建表。
''' '''
from sqlalchemy import create_engine from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker,declarative_base from sqlalchemy.orm import sessionmaker,declarative_base
from .config import ( from .config import (
+43
View File
@@ -0,0 +1,43 @@
'''
1. 参数说明:
field_name:业务编号字段名,例如 student_no
prefix:业务编号前缀,例如 STU
db_object:已实例化的 ORM 对象,例如 stu
db:当前接口中的数据库 Session
2. ORM 主键统一命名为 id。
业务编号字段按文档命名,例如 student_no、teacher_no、class_no。
3. 必须先执行 db.add(db_object),再调用 generate_no()。
4. 主键id一定要设置成自增。
dao模块示例代码:
def add_student(
result: CreateStudent,
db: Session
):
stu = Student(**result.model_dump())
db.add(stu)
generate_no("student_no", "STU", stu, db)
db.commit()
return stu
'''
def generate_no(field_name: str, prefix: str, db_object, db: Session):
if getattr(db_object, field_name):
return
db.flush()
record_no = f"{prefix}{db_object.id:04d}"
setattr(db_object, field_name, record_no)