SQLAlchemy的使用

SQLAlchemy的使用

1. Flask中配置数据库

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
# # 使用pymysql替代MySQLdb
# import pymysql
# pymysql.install_as_MySQLdb()

#1. 创建flask应用
app = Flask(__name__)

#2. 配置flask数据库URI信息
# app.config['SQLALCHEMY_DATABASE_URI']="mysql://用户名:密码@数据库服务器地址:端口号/数据库名"
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:123456@localhost:3306/blog"

#取消SQLAlchemy的信号追踪
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

#3.生成父类数据库映射模型
db = SQLAlchemy(app)

if __name__ == "__main__":
    app.run(debug=True)

2.数据库实体类创建

1. 实体类:根据数据库中的表结构而创建出来的类(模型类,实体类)

  1. 语法
	class MODELNAME(db.Model):
		__tablename__="TABLENAME"
		COLUMN_NAME = db.Column(db.TYPE,OPTIONS)

示例:

#创建数据库实体类
class Users(db.Model):
    __tablename__ = "users"
    id = db.Column(db.Integer,primary_key=True)
    username = db.Column(db.String(80),unique=True,index=True)
    age = db.Column(db.Integer,nullable=True)

# 将创建的实体类映射到数据库,生成表,只有数据库中表不存在才会创建
db.create_all()

#删除所有数据表
#db.drop_all()
  1. MODELNAME:定义模型类的名称,可以根据表名而设定
  2. TABLENAME:映射到数据库中表名
  3. COMLUMN_NAME:属性名,映射到数据库就是列名
  4. TYPE:映射到列的数据类型
  5. OPTIONS:列选项
  6. db.TYPE 列类型如下:
类型名 python类型 说明
Integer int 普通整数,32位
SmallInteger int 小范围整数,16位
BigInteger int或long 不限精度整数
Float float 浮点数
Numeric decimal.Decimal 定点数
String str 字符串
Text str 字符串
Boolean bool 布尔值
Date datetime.date 日期类型
Time datetime.time 时间类型
DateTime datetime.datetime 日期和时间类型
  1. OPTIONS 列选项
选项名 说明
autoincrement 如果设置为True表示该列自增长
primary_key 如果设置为True表示该列为主键
unique 如果设置为True表示该列值唯一
index 如果设置为True表示该列加索引
nullable 如果设置为True表示该列可为空
default 指定该列的默认值

注:如果列的类型是整数并且是主键,则默认自增长
如果一个列中要包含多个列选项,使用 ‘,’ 隔开即可
列选项 与 列类型之间使用 ‘,’ 隔开的

2. 数据库迁移

安装:flask-script
安装:flask-migrate

from flask_script import Manager
from flask_migrate import Migrate,MigrateCommand

#创建Manager对象管理flask应用
manager = Manager(app)

#创建Migrate对象并关联app和db
migrate = Migrate(app,db)

#为manager添加执行数据库数据库迁移命令
manager.add_command("db",MigrateCommand)

终端执行:

  1. python3 xxx.py db init
    作用:做一些项目和数据库的初始化操作
    特点:一个项目中,只执行一次即可
  2. python3 xxx.py db migrate
    作用:将编辑好的实体类生成中间文件并保存在migrations文件夹中
    特点:只要检测到实体类有更改,就会生成中间文件
  3. python3 xxx.py db upgrade
    作用:将中间文件映射回数据库

版权声明:本文为qq_36881091原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。