環境說明
Centos7 + python3.6 + mysql5.7
1.安裝Flask-SQLAlchemy,pymyql驅動
pip install flask-sqlalchemy
pip intall pymysql
2.使用Flask-SQLAlchemy
Flask-SQLAlchemy數據庫URL 經常使用的數據庫引擎:python
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爬取小說展現項目