From 90b6564ce64cd140520408d3d17cd4a857858656 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E8=83=9C=E8=88=9F?= <1650473152@com> Date: Wed, 21 Jun 2023 01:44:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/install.md | 9 +++++---- docs/model.md | 50 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 docs/model.md diff --git a/docs/install.md b/docs/install.md index 1453cfc..a617ac5 100644 --- a/docs/install.md +++ b/docs/install.md @@ -70,16 +70,17 @@ python -m pip install -r requirement.txt flask db init flask db migrate flask db upgrade -flask system init +flask admin init ``` #### 运行项目 ```shell -python app.py +# linux +run.bat -# 或者可以使用 -flask run +# windows +./run.sh ``` #### 使用docker-compose运行项目 diff --git a/docs/model.md b/docs/model.md new file mode 100644 index 0000000..52bf177 --- /dev/null +++ b/docs/model.md @@ -0,0 +1,50 @@ +## 模型/数据库和序列化 +### 数据库连接 + +项目采用flask-sqlalchemy,支持多数据库连接,默认sqlite + +HOSTNAME: 指数据库的IP地址 +USERNAME:指数据库登录的用户名 +PASSWORD:指数据库登录密码 +PORT:指数据库开放的端口 +DATABASE:指需要连接的数据库名称 +#### mssql +``` +MSSQL: f"mssql+pymssql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=cp936" +``` +#### msyql +``` +$ pip install pymysql + +# 手动在mysql中创建数据库,并将配置文件中的url配置如下示例 + +SQLALCHEMY_DATABASE_URI = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8mb4" +``` +#### Oracle +``` +Oracle: f"oracle+cx_oracle://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}" +``` +#### SQLite +``` +SQLite "sqlite:/// database.db" +``` +#### Postgres +``` +Postgres f"postgresql+psycopg2://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}" +``` + + +### 序列化 + +推荐使用这种自动类型的 +```python +from flask_marshmallow.sqla import SQLAlchemyAutoSchema +from applications.models import 你的模型类 +class RoleOutSchema(SQLAlchemyAutoSchema): + class Meta: + model = 你的模型类 # table = models.Album.__table__ + # include_relationships = True # 输出模型对象时同时对外键,是否也一并进行处理 + include_fk = True # 序列化阶段是否也一并返回主键 + # fields= ["id","name"] # 启动的字段列表 + # exclude = ["id","name"] # 排除字段列表 +```