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小說爬取項目

相關文章
相關標籤/搜索