Flask使用MySql数据库
环境说明
Centos7 + python3.6 + mysql5.7
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 |
app.py
编辑
#导入模块
from flask_sqlalchemy import SQLAlchemy
import pymysql
#创建flask对象
app = Flask(__name__)
#配置flask配置对象中键:SQLALCHEMY_DATABASE_URI
app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://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()
6.具体实例代码可以看我的git有个flask+requests爬取小说展示项目
基于flask+requests小说爬取项目
Flask学习