大多數的資料庫引擎都有對應的 python 包,包括開源包和商業包。flask 並不限制你使用何種型別的資料庫包,因此可以根據自己的喜好選擇使用 mysql、postgres、sqlite、redis、mongodb 或者 couchdb。
如果這些都無法滿足需求,還有一些資料庫抽象層**包供選擇,例如sqlalchemy和mongoengine。你可以使用這些抽象包直接處理高等級的 python 物件,而不用處理如表、文件或查詢語言此類的資料庫實體。
選擇資料庫框架的因素:
效能。orm 和 odm 把物件業務轉換成資料庫業務會有一定的損耗。真正的關鍵點在於如何選擇乙個能直接操作低層資料庫的抽象層,以防特定的操作需要直接使用資料庫原生指令優化。
可移植性。必須考慮其是否能在你的開發平台和生產平台中使用。
flask整合度
pip install flask-sqlalchemy
使用url制定資料庫
資料庫引擎
urlmysql
mysql://username:password@hostname/database
postgres
postgresql://username:password@hostname/database
sqlite(unix)
sqlite:absolute/path/to/database
sqlite(windows)
sqlite:///c:/absolute/path/to/database
sqlite 數 據 庫 不 需 要 使 用 服 務 器, 因 此 不 用 指 定 hostname 、 username 和 password 。url 中的 database 是硬碟上檔案的檔名。
配置物件中還有乙個很有用的選項,即 sqlalchemy_commit_on_teardown 鍵,將其設為 true時,每次請求結束後都會自動提交資料庫中的變動
關係型資料庫使用關係把不同表中的行聯絡起來。
#filter_by() 等過濾器在 query 物件上呼叫,返回乙個更精確的 query 物件。user_role = role.query.filter_by(name='user').first()
過濾器說 明
filter()
把過濾器新增到原查詢上,返回乙個新查詢
filter_by()
把等值過濾器新增到原查詢上,返回乙個新查詢
limit()
使用指定的值限制原查詢返回的結果數量,返回乙個新查詢
offset()
偏移原查詢返回的結果,返回乙個新查詢
order_by()
根據指定條件對原查詢結果進行排序,返回乙個新查詢
group_by()
根據指定條件對原查詢結果進行分組,返回乙個新查詢
最常使用的sqlalchemy查詢執行函式
方 法說 明
all()
以列表形式返回查詢的所有結果
first()
返回查詢的第乙個結果,如果沒有結果,則返回 none
first_or_404()
返回查詢的第乙個結果,如果沒有結果,則終止請求,返回 404 錯誤響應
get()
返回指定主鍵對應的行,如果沒有對應的行,則返回 none
get_or_404()
返回指定主鍵對應的行,如果沒找到指定的主鍵,則終止請求,返回 404 錯誤響應
count()
返回查詢結果的數量
paginate()
返回乙個 paginate 物件,它包含指定範圍內的結果
python hello.py db upgrade學習筆記 資料庫
目前internet 上流行的 構架方式是lamp linux apache mysql php 即使用 linux 作為作業系統,apache 作為web 伺服器,mysql 作為資料庫,php作為伺服器端指令碼直譯器 由於這四個軟體都是免費或開放原始碼軟體 floss 因此使用這種方式不用花一分...
學習筆記 資料庫基本
必須字母開頭,不要用漢字 必須在1 30個字元之間 必須只能包含a z,a z,0 9,和 不能重名 create table student stuid int not null,stuname varchar 20 not null,char 2 not null,sid int not nul...
學習筆記 資料庫1
搭建資料庫伺服器 2.解包 tar xvf mysql 5.6.15 1.el6.x86 64.rpm bundle.tar 3.公升級安裝 rpm uvh mysql rpm 4.檢查已安裝的mysql包 rpm qa grep i mysql 5.檢視初始密碼 cat root mysql se...