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类型说明
Integerint普通整数,32位
SmallIntegerint小范围整数,16位
BigIntegerint或long不限精度整数
Floatfloat浮点数
Numericdecimal.Decimal定点数
Stringstr字符串
Textstr字符串
Booleanbool布尔值
Datedatetime.date日期类型
Timedatetime.time时间类型
DateTimedatetime.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
    作用:将中间文件映射回数据库
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值