Flask使用MySql数据库

环境说明

Centos7 + python3.6 + mysql5.7

1.安装Flask-SQLAlchemy,pymyql驱动

pip install flask-sqlalchemy
pip intall pymysql

2.使用Flask-SQLAlchemy

Flask-SQLAlchemy数据库URL 经常使用的数据库引擎:python

数据库引擎 URL
MySql mysql+pymysql://username:password@host/database
Postgres postgresql://username:password@host/database

app.py编辑mysql

#导入模块
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小说爬取项目

相关文章
相关标签/搜索