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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM