From 0b891e19d41e84274f8c50e3c9751be9fe6f8211 Mon Sep 17 00:00:00 2001 From: lookerZz <1031516901@qq.com> Date: Mon, 21 Sep 2026 02:52:56 +0800 Subject: [PATCH] add code generator and gitignore --- .gitignore | 18 +++++++++++++++++ core/database.py | 1 + utils/code_generator.py | 43 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bde1ffa --- /dev/null +++ b/.gitignore @@ -0,0 +1,18 @@ +# Python 缓存 +__pycache__/ +*.pyc +*.pyo +*.pyd + +# Python 虚拟环境 +.venv/ +venv/ +env/ + +# IDE +.idea/ +.vscode/ + +# 系统垃圾 +.DS_Store +Thumbs.db \ No newline at end of file diff --git a/core/database.py b/core/database.py index ee23301..ae95c99 100644 --- a/core/database.py +++ b/core/database.py @@ -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 ( diff --git a/utils/code_generator.py b/utils/code_generator.py index e69de29..f4b48ce 100644 --- a/utils/code_generator.py +++ b/utils/code_generator.py @@ -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)