文章目录
1.创建python虚拟环境
pip install virtualenv
# 创建虚拟环境
cd /python3.8/bin # cd 项目所使用的版本python安装路径下的bin
virtualenv -p ./python3.8_path project_env_path_name
source project_env_path_name/bin/activate
# 安装依赖
pip install pymsyql
# 批量安装
pip install -r requirements.txt
# 查看依赖
pip list 或 pip freeze > requirements.txt
2.实例代码
2.1 flask开发方式1:手动创建文件开发项目目录结构实例
├─migrations # 数据库迁移目录
│ ├─versions
│ └─__pycache__
├─test
└─__init__.py
└─models.py # 模型类
└─views.py # 视图
└─__init__.py
└─manage.py # 启动文件
└─requirements.txt # 依赖信息
test目录
__init__.py
from flask import Blueprint
# 创建蓝图对象
account = Blueprint('test', __name__)
from .views import *
models.py模型类文件
from manage import db
class Role(db.Model):
# 设置表名,不设置表名就是类名。
__tablename__ = "sample"
# 设置字段,以及属性,传入name数据表中的字段为'id',不传为默认的id
id = db.Column(db.Integer, name='id', primary_key=True)
name = db.Column(db.String(10), nullable=False)
view.py视图文件
# !/usr/bin/env python
# -*- coding:utf-8 -*-
from manage import db
from test import account
from test.test_model import Role
@account.route('/login')
def login():
"""
# db.session.add(models.Users(username='123', email='123'))
# #db.session.query(models.Users).all()
# db.session.commit()
# 添加示例
"""
user_list = db.session.query(Role).all()
for item in user_list:
print(item.id, "is", item.name)
return 'login'
manage.py项目主文件
from flask import Flask
from flask_script import Manager
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate, MigrateCommand
from test import account
db = SQLAlchemy()
class BaseConfig(object):
# SESSION_TYPE = 'redis' # session类型为redis
# SESSION_KEY_PREFIX = 'session:' # 保存到session中的值的前缀
# SESSION_PERMANENT = True # 如果设置为False,则关闭浏览器session就失效。
# SESSION_USE_SIGNER = False # 是否对发送到浏览器上 session:cookie值进行加密
SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root@127.0.0.1:3306/test_fastapi?charset=utf8"
SQLALCHEMY_POOL_SIZE = 5
SQLALCHEMY_POOL_TIMEOUT = 30
SQLALCHEMY_POOL_RECYCLE = -1
# 追踪对象的修改并且发送信号
SQLALCHEMY_TRACK_MODIFICATIONS = False
def create_app():
app = Flask(__name__)
app.config.from_object(BaseConfig)
app.debug=True
db.init_app(app)
# 将db注册到app中
# db.init_app(app)
return app
app = create_app()
# 注册蓝图
app.register_blueprint(account,url_prefix='/test')
manager = Manager(app)
# 将当前app,与db注册到Migrate
Migrate(app, db)
# 添加管理数据的命令
manager.add_command('db1', MigrateCommand)
if __name__ == '__main__':
manager.run()
requirements.txt
alembic==1.4.3
click==7.1.2
Flask==1.1.2
Flask-Migrate==2.5.3
Flask-Script==2.0.6
Flask-SQLAlchemy==2.4.4
itsdangerous==1.1.0
Jinja2==2.11.2
Mako==1.1.3
MarkupSafe==1.1.1
PyMySQL==0.10.1
python-dateutil==2.8.1
python-editor==1.0.4
six==1.15.0
SQLAlchemy==1.3.22
Werkzeug==1.0.1
2.2 flask开发方式2:利用swagger文件生成文件方式开发项目简单介绍
登录SwaggerEditor网站编辑项目swagger文件 >>>>> 点击【Generate Server】选择【python-flask】下载项目文件 >>>>> 根据项目实际目录情况修改模型类相关文件信息和配置
3.运行代码
创建数据库create database test charset=utf8mb4;
3.1 建表方法
3.1.1 方法一:使用Flask-Migrate迁移建表
python manage.py shell
>>>from manage import db
>>>db.create_all() # 创所有表
>>>db.drop_all() # 删所有表
# db1 为manage.py文件中添加的迁移命令manager.add_command('db1', MigrateCommand)
python manage.py db1 init # 生成migrations文件夹
python manage.py db1 migrate -m "注释" # 在migrations/versions中生成一个文件,该文件记录数据表的创建和更新的不同版本的代码。
python manage.py db1 upgrade # 在数据库中生成对应的表格。
3.2.2 方法二:sql建表再sqlachemy直接连接数据库映射
create table test(
id int primary key AUTO_INCREMENT,
`name` VARCHAR(10) NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
3.2 启动项目
若项目目录下启动文件为 manage.py
文件,以 manage.py
文件为例
python manage.py runserver -h 127.0.0.1 -p 5000
若项目目录下启动文件为main.py
文件,可使用命令python -m 项目目录名称
启动项目