flask mysql orm,flask的orm框架(Flask-SQLAlchemy)-创建表
標簽:
# 轉載請留言聯系
ORM 是什么?
ORM,Object-Relation Mapping。意思就是對象-關系映射。ORM 主要實現模型對象到關系數據庫數據的映射。
優點 :
只需要面向對象編程, 不需要面向數據庫編寫代碼.
對數據庫的操作都轉化成對類屬性和方法的操作.
不用編寫各種數據庫的sql語句.
實現了數據模型與數據庫的解耦, 屏蔽了不同數據庫操作上的差異.
不在關注用的是mysql、oracle...等.
通過簡單的配置就可以輕松更換數據庫, 而不需要修改代碼.
缺點 :
相比較直接使用SQL語句操作數據庫,有性能損失.
根據對象的操作轉換成SQL語句,根據查詢的結果轉化成對象, 在映射過程中有性能損失.
Flask-SQLAlchemy的安裝
SQLAlchemy是一個關系型數據庫框架,它提供了高層的 ORM 和底層的原生數據庫的操作。flask-sqlalchemy 是一個簡化了 SQLAlchemy 操作的 flask 擴展。
安裝 flask-sqlalchemy
pip3 install flask-sqlalchemy
如果連接的是 mysql 數據庫,需要安裝 mysqldb?驅動
pip3 install flask-mysqldb
如果第二步安裝出現錯誤,一般是沒有安裝 libmysqld-dev 造成的
sudo apt-get install libmysqld-dev
Flask-SQLAlchemy 連接數據庫以及創建表
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app=Flask(__name__)
# 連接數據庫
app.config['SQLALCHEMY_DATABASE_URI'] = '數據庫類型://數據庫用戶名:數據庫密碼@數據庫地址:數據庫端口/數據庫名字'
# 設置是否跟蹤數據庫的修改情況,一般不跟蹤
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 數據庫操作時是否顯示原始SQL語句,一般都是打開的,因為我們后臺要日志
app.config['SQLALCHEMY_ECHO'] = True
# 實例化orm框架的操作對象,后續數據庫操作,都要基于操作對象來完成
db = SQLAlchemy(app)
# 聲明模型類
class Role(db.Model):
__tablename__ = "my_table" #設置表名
id = db.Column(db.INTEGER,primary_key=True) 設置字段,以及屬性
name = db.Column(db.String(10),nullable=False)
@app.route("/")
def index():
return "hello"
if __name__ == '__main__':
db.create_all() # 創建當前應用中聲明的所有模型類對應的數據表,db.drop_all()是刪除表
app.run(debug=True)
數據庫的其他配置
名字備注
SQLALCHEMY_DATABASE_URI
用于連接的數據庫 URI 。例如:sqlite:tmp/test.dbmysql://username:password@server/db
SQLALCHEMY_BINDS
一個映射 binds 到連接 URI 的字典。更多 binds 的信息見用 Binds 操作多個數據庫。
SQLALCHEMY_ECHO
如果設置為Ture, SQLAlchemy 會記錄所有 發給 stderr 的語句,這對調試有用。(打印sql語句)
SQLALCHEMY_RECORD_QUERIES
可以用于顯式地禁用或啟用查詢記錄。查詢記錄 在調試或測試模式自動啟用。更多信息見get_debug_queries()。
SQLALCHEMY_NATIVE_UNICODE
可以用于顯式禁用原生 unicode 支持。當使用 不合適的指定無編碼的數據庫默認值時,這對于 一些數據庫適配器是必須的(比如 Ubuntu 上 某些版本的 PostgreSQL )。
SQLALCHEMY_POOL_SIZE
數據庫連接池的大小。默認是引擎默認值(通常 是 5 )
SQLALCHEMY_POOL_TIMEOUT
設定連接池的連接超時時間。默認是 10 。
SQLALCHEMY_POOL_RECYCLE
多少秒后自動回收連接。這對 MySQL 是必要的, 它默認移除閑置多于 8 小時的連接。注意如果 使用了 MySQL , Flask-SQLALchemy 自動設定 這個值為 2 小時。
連接其他數據庫
完整連接 URI 列表請跳轉到 SQLAlchemy 下面的文檔 (Supported Databases) 。
常用的SQLAlchemy字段類型
類型名python中類型說明
Integer
int
普通整數,一般是32位
SmallInteger
int
取值范圍小的整數,一般是16位
BigInteger
int或long
不限制精度的整數
Float
float
浮點數
Numeric
decimal.Decimal
普通整數,一般是32位
String
str
變長字符串
Text
str
變長字符串,對較長或不限長度的字符串做了優化
Unicode
unicode
變長Unicode字符串
UnicodeText
unicode
變長Unicode字符串,對較長或不限長度的字符串做了優化
Boolean
bool
布爾值
Date
datetime.date
時間
Time
datetime.datetime
日期和時間
LargeBinary
str
二進制文件
常用的SQLAlchemy列選項
選項名說明
primary_key
如果為True,代表表的主鍵
unique
如果為True,代表這列不允許出現重復的值
index
如果為True,為這列創建索引,提高查詢效率
nullable
如果為True,允許有空值,如果為False,不允許有空值
default
為這列定義默認值
標簽:
來源: https://www.cnblogs.com/chichung/p/9782919.html
總結
以上是生活随笔為你收集整理的flask mysql orm,flask的orm框架(Flask-SQLAlchemy)-创建表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux内核权限维持,Linux权限维
- 下一篇: java调用c视频接口_JAVA本地调用