配置鍵說明
sqlalchemy_database_uri
用於連線資料的資料庫。例如:
sqlalchemy_binds
乙個對映繫結 (bind) 鍵到 sqlalchemy 連線 uris 的字典。用於繫結多個資料庫
sqlalchemy_echo
如果設定成
true
,sqlalchemy 將會記錄所有 發到標準輸出(stderr)的語句,這對除錯很有幫助。
sqlalchemy_record_queries
可以用於顯式地禁用或者啟用查詢記錄。查詢記錄 在除錯或者測試模式下自動啟用。更多資訊請參閱get_debug_queries()
。
sqlalchemy_native_unicode
可以用於顯式地禁用支援原生的 unicode。這是 某些資料庫介面卡必須的(像在 ubuntu 某些版本上的 postgresql),當使用不合適的指定無編碼的資料庫 預設值時。
sqlalchemy_pool_size
資料庫連線池的大小。預設是資料庫引擎的預設值 (通常是 5)。
sqlalchemy_pool_timeout
指定資料庫連線池的超時時間。預設是 10。
sqlalchemy_pool_recycle
自動**連線的秒數。這對 mysql 是必須的,預設 情況下 mysql 會自動移除閒置 8 小時或者以上的連線。 需要注意地是如果使用 mysql 的話, flask-sqlalchemy 會自動地設定這個值為 2 小時。
sqlalchemy_max_overflow
控制在連線池達到最大值後可以建立的連線數。當這些額外的 連線**到連線池後將會被斷開和拋棄。
sqlalchemy_track_modifications
如果設定成
true
(預設情況),flask-sqlalchemy 將會追蹤物件的修改並且傳送訊號。這需要額外的記憶體, 如果不必要的可以禁用它。
flask專案中,一般使用單獨的檔案儲存配置(如:config.py),應用程式可以使用from_object()來獲取配置資訊
db = sqlalchemy()
class user(db.model):
__tablename__ = 'user'
id = db.column(db.integer, primary_key=true)
username = db.column(db.string(80), unique=true)
email = db.column(db.string(120), unique=true)
def __init__(self, username, email):
self.username = username
self.email = email
def __repr__(self):
return '' % self.username
列型別說明
integer
乙個整數
string
(size)
有長度限制的字串
text
一些較長的 unicode 文字
datetime
表示為 pythondatetime
物件的 時間和日期
float
儲存浮點值
boolean
儲存布林值
pickletype
儲存為乙個持久化的 python 物件
largebinary
儲存乙個任意大的二進位制資料
選項名說明
primary_key
如果設為true,表示主鍵
unique
如果設為true,這列不重複
index
如果設為true,建立索引,提公升查詢效率
nullable
如果設為true,允許空值
default
為這列定義預設值,可以接受lambda表示式
a. 插入記錄
向資料庫插入資料分為三個步驟:
建立 python 物件
把它新增到會話
提交會話
>>> me = user('admin', '[email protected]')
>>> db.session.add(me)
>>> db.session.commit()
b. 刪除記錄
>>> db.session.delete(me)
>>> db.session.commit()
c. 查詢記錄
flask-sqlalchemy 在您的 model 類上提供了 query 屬性。當您訪問它時,您會得到乙個新的所有記錄的查詢物件。
>>> peter = user.query.filter_by(username='peter').first()
>>> peter.id
1>>> peter.email
sqlalchemy有查詢過濾器如下:
過濾器說明
filter()
把過濾器新增到原查詢,返回新查詢
filter_by()
把等值過濾器新增到原查詢,返回新查詢
limit()
使用指定值限制原查詢返回的結果數量,返回新查詢
offset()
偏移原查詢返回的結果,返回新查詢
order_by()
排序返回結果,返回新查詢
groupby()
原查詢分組,返回新查詢
這些過濾器返回的結果都是乙個新查詢,這些查詢其實是生成的sql語句,惰性求值方式也體現在查詢上,而這些語句不能生成需要查詢的物件,需要呼叫其他的方法生成物件。
sql查詢執行函式:
方法說明
all()
以列表形式返回結果
first()
返回第乙個結果,如果沒有返回none
first_or_404()
返回第乙個結果,如果沒有丟擲404異常
get()
返回主鍵對應記錄,沒有則返回none
get_or_404()
返回主鍵對應記錄,如果沒有丟擲404異常
count()
返回查詢結果數量
paginate()
返回paginate物件,此物件用於分頁
sqlalchemy_database_uri = 'postgres://localhost/main'
sqlalchemy_binds =
create_all() 和 drop_all() 方法預設作用於所有宣告的繫結(bind),包括預設的。這個行為可以通過提供 bind 引數來定製。
>>> db.create_all()
>>> db.create_all(bind=['users'])
>>> db.drop_all(bind=none)
當您宣告模型時,您可以用 __bind_key__ 屬性指定繫結(bind):
class user(db.model):
__bind_key__ = 'users'
id = db.column(db.integer, primary_key=true)
username = db.column(db.string(80), unique=true)
如果您在模型上指定了 __bind_key__ ,您可以用它們準確地做您想要的。模型會自行連 接到指定的資料庫連線。
建立管理檔案manage.py
from flask import flask
from flask_sqlalchemy import sqlalchemy
from flask_script import manager, shell
from flask_migrate import migrate, migratecommand
db = sqlalchemy()
manager.add_command('db', migratecommand)
manager.run()
manager使用說明:
命令格式:
python manager.py db [command]
command說明:init-初始化資料庫遷移(自動生成migrations目錄及檔案),僅在第一次使用
migrate-生成遷移資料,自動根據model變化生成遷移資料檔案,含版本控制
upgrade-執行公升級操作,將變動的表結構提交到資料庫,保留資料庫原資料
downgrade-執行降級操作, 相當於撤回本次公升級操作
flask SQLAlchemy基本使用
作為資料的操作,最基本的就是增刪改查 常用的sqlalchemy查詢過濾器 過濾器說明 filter 把過濾器新增到原查詢上,返回乙個新查詢 filter by 把等值過濾器新增到原查詢上,返回乙個新查詢 limit 使用指定的值限定原查詢返回的結果 offset 偏移原查詢返回的結果,返回乙個新查...
Flask SQLAlchemy定義模型
模型表示程式使用的資料實體,在flask sqlalchemy中,模型一般是python類,繼承自db.model,db是sqlalchemy類的例項,代表程式使用的資料庫。類中的屬性對應資料庫表中的列。id為主鍵,是由flask sqlalchemy管理。db.column類建構函式的第乙個引數是...
flask sqlalchemy用法簡介
coding utf 8 time 2019 5 26 20 54 author dailinqing email dailinqing 126.com file flask db.py software pycharm from flask sqlalchemy import sqlalchemy...