欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Flask使用MySql数据库

程序员文章站 2022-04-28 09:21:52
1.安装Flask SQLAlchemy,pymyql驱动 2.使用Flask SQLAlchemy Flask SQLAlchemy数据库URL 常用的数据库引擎: 数据库引擎 | URL | MySql | mysql+pymysql://username:password@host/datab ......

1.安装Flask-SQLAlchemy,pymyql驱动

pip install flask-sqlalchemy
pip intall pymysql

2.使用Flask-SQLAlchemy

Flask-SQLAlchemy数据库URL
常用的数据库引擎:
数据库引擎 | URL
---|---
MySql | mysql+pymysql://username:password@host/database
Postgres | postgresql://username:password@host/database

#导入模块
from flask_sqlalchemy import SQLAlchemy
import pymysql

#创建flask对象
app = Flask(__name__)

#配置flask配置对象中键:SQLALCHEMY_DATABASE_URI

app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+mysql://username:password@hostname/database"

#配置flask配置对象中键:SQLALCHEMY_COMMIT_TEARDOWN,设置为True,应用会自动在每次请求结束后提交数据库中变动

app.config['SQLALCHEMY_COMMIT_TEARDOWN'] = Ture
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True

#获取SQLAlchemy实例对象,接下来就可以使用对象调用数据

db = SQLAlchemy(app)

3.sqlalchemy列常见参数

选择项 说明
autoincrement True 是否自增
primary_key True 是否是主键
indexE TRUE 是否是索引
unique True 是否是唯一
nullable True 是否允许字段为空
default 默认值

4.字段类型

类型名称 python类型 描述
Integer int 常规整型,通常为32位
SmallInteger int 短整型,通常为16位
BigInteger int或long 精度不受限整型
Float float 浮点型
Numeric decimal 定点数
String str 可变长度字符串
Text str 可变长度字符串,适合大量文本
Unicode unicode 可变长度Unicode字符串
Boolean bool 布尔值
Date datetime.date 日期类型
Time datetime.time 时间类型
DateTime datetime.datetime 日期时间类型
Interval datetime.timedate 时间间隔
Enum str 字符列表
PickleType 任意Python对象 自动Pickle序列化
LargeBinary str 二进制

5.使用sqlalchemy

from app import db
#创建模型对象
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)

def __repr__(self):
    return '<User %r>' % self.username

# 1.创建表
db.create_all()

# 2.增加记录
admin = User(username='admin', email='admin@example.com')
guest = User(username='guest', email='guest@example.com')
db.session.add(admin)
db.session.add(guest)
db.session.commit()

#3.查询记录,注意查询返回对象,如果查询不到返回None
User.query.all() #查询所有
User.query.filter_by(username='admin').first()#条件查询
User.query.order_by(User.username).all()#排序查询
User.query.limit(1).all()#查询1条
User.query.get(id = 123)#精确查询

# 4.删除
user = User.query.get(id = 123)
db.session.delete(user)
db.session.commit()