安裝
需要先安裝mysql開發庫的。
操作
創建SQLALchemy 對象, 然後再 綁定Flask
指定SQLALchemy URI
定義模型
使用 ORM 就肯定要定義對象的
從這兩個例子可以看到,定義一列是需要使用 db.Column 的,然後需要指定數據類型,還有列的選項,常用的數據類型有:
類型名Python 類型說明Integerint普通整數,一般是32位SmallIntegerint取值範圍小的整數,一般是 16 位BigIntegerint 或 long不限制精度的整數Floatfloat浮點數Numericdecimal.Decimal定點數Stringstr變長字符串Textstr編程字符串,對較長或不限長度的字符串做了優化Unicodeunicode變長 Unicode 字符串UnicodeTextunicode變長 Unicode 字符串,對較長或不限長度的字符串做了優化Booleanbool布爾值Datedatetime.date日期Timedatetime.time時間DateTimedatetime.datetime日期和時間Intervaldatetime.timedelta時間間隔Enumstr一組字符串PickleType任何 python 對象自動使用 Pickle 序列化LargeBinarystr二進制文件而一些常用的 SQLAlchemy
列選項: 選項名說明primary_key如果設為 True,這列就是表的主鍵unique如果設為 True,這列不允許出現重複的值index如果設為 True,為這列創建索引,提升查詢效率nullable如果設為 True,這列允許使用空值,如果設為 False,這列不允許使用空值default為這列定義默認值數據庫操作
數據庫的操作不外乎就是增刪改查,所以這裡就介紹一下增刪改查怎麼做,和其他 ORM(例如 MongoEngine) 不一樣,SQLAlchemy使用之前需要先創建表和數據庫才能操作數據。 所以第一步是創建表:
插入數據
這裡需要提一下的就是 db.session,這個 session 是數據庫中 事務的含義,因此我們可以提交修改數據,也可以回滾取消修改。
修改數據
修改只需要修改屬性並提交就行了。
刪除數據
刪除數據直接調用 delete 方法即可,記得 commit。
查詢數據
查詢數據稍微複雜一下
獲得查詢對象
添加過濾條件
如果還有其他分組之類的,繼續添加
這裡的 filter_by 叫做過濾器,常用的過濾器有
過濾器說明filter把過濾器添加到原查詢上,返回一個新查詢filter_by把等值過濾器添加到原查詢上,返回一個新查詢limit 使用指定的值限制返回的結果數量,返回一個新查詢offset便宜原查詢返回的結果, 返回一個新查詢order_by根據指定條件對原查詢結果進行排序,返回一個新查詢group_by根據指定條件對原查詢結構進行分組,返回一個新查詢如果後面不加.all(),那麼其實是不會真正到數據庫執行的,類似 all 的執行器還有很多,常用的有:
方法說明all以列表形式返回查詢的所有結果first返回查詢的第一個結果,如果沒有結果,則返回 Nonefirst_or_404返回查詢的第一個結果,如果沒有結果,則終止請求,返回 404 錯誤輸出get返回指定主鍵對應的行,如果沒有對應的行,則返回 Noneget_or_404返回指定主鍵對應的行,如果沒找到指定的主鍵,則終止請求,返回 404 錯誤輸出count返回查詢結果的數量paginate返回一個 Paginate 對象,它包含指定範圍內的結果