add code generator and gitignore
This commit is contained in:
+18
@@ -0,0 +1,18 @@
|
||||
# Python 缓存
|
||||
__pycache__/
|
||||
*.pyc
|
||||
*.pyo
|
||||
*.pyd
|
||||
|
||||
# Python 虚拟环境
|
||||
.venv/
|
||||
venv/
|
||||
env/
|
||||
|
||||
# IDE
|
||||
.idea/
|
||||
.vscode/
|
||||
|
||||
# 系统垃圾
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
@@ -14,6 +14,7 @@ IP:localhost
|
||||
直接 from core.database import Base ,否则会出现 Base 不一致的情况,导致数据库无法创建表。
|
||||
'''
|
||||
|
||||
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import sessionmaker,declarative_base
|
||||
from .config import (
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user