欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQLAlchemy案例詳解

 更新時間:2024年04月07日 09:28:59   作者:Se7eN_HOU  
SQLAlchemy?是?Python?SQL?工具包和對象關系映射器,為應用程序開發(fā)人員提供SQL的全部功能和靈活性,這篇文章主要介紹了SQLAlchemy詳解,需要的朋友可以參考下

一、SQLAlchemy介紹

  SQLAlchemy 是 Python SQL 工具包和對象關系映射器,為應用程序開發(fā)人員提供 SQL 的全部功能和靈活性。

  SQLAlchemy支持SQLite、PostgreSQL、Oracle、MySQL、MariaDB、Microsoft SQL Server等多種數(shù)據(jù)庫。

二、SQLAlchemy安裝

  我安裝的版本是:SQLAlchemy==2.0.29。注意SQLAlchemy2.x以上的版本和1.x版本差別還是挺大的,注意版本。

  因為SQLAlchemy不能直接操作數(shù)據(jù)庫,還需要python中的pymysql第三方庫,所以還需要安裝pymysql

  PyMySQL==1.1.0.

三、創(chuàng)建測試數(shù)據(jù)庫

  創(chuàng)建一個用于測試的數(shù)據(jù)庫

  其中sqlalchemydb就是測試數(shù)據(jù)庫

四、封裝SQLAlchemyDB類

  在python項目根目錄下創(chuàng)建一個sqlalchemy_db.py文件,當然你也可以在其他目錄下創(chuàng)建。其中內容如下:

  說明1:該文件sqlalchemy_db.py的作用是封裝一個SQLAlchemy的類,為實例化sqlAlchemy對象做準備

  說明2:self.engine是連接數(shù)據(jù)的引擎設置,只有設置了engine,我們才能通過sqlalchemy對象操作數(shù)據(jù)庫

  說明3:self.session可以理解為數(shù)據(jù)庫的操作對象,我們對數(shù)據(jù)庫的操作都是基于該session實現(xiàn)的。

  說明4:engine參數(shù)解釋

  • 參數(shù)url:SQLAlchemy要連接的數(shù)據(jù)庫地址,其格式為:數(shù)據(jù)庫類型+數(shù)據(jù)庫驅動://數(shù)據(jù)庫用戶:數(shù)據(jù)庫密碼@數(shù)據(jù)庫地址:端口號/數(shù)據(jù)庫名稱?編碼方式
  • 參數(shù)convert_unicode:按照指定的編碼方式對字符串進行編碼解碼
  • 參數(shù)isolation_level:設置事務的隔離界別
  • 參數(shù)pool_recycle:設置回收鏈接的時間,單位毫秒
  • 參數(shù)pool_pre_ping:每次連接前預先ping一下
  • 參數(shù)pool_size: 鏈接池中保持數(shù)據(jù)庫連接的數(shù)量,默認是5
  • 參數(shù)max_overflow :當鏈接池中的連接數(shù)不夠用的時候,允許額外再創(chuàng)建的最大鏈接數(shù)量,默認是10
  • pool_timeout:排隊等數(shù)據(jù)庫鏈接時的超時時間

說明5:scoped_session創(chuàng)建的session是線程安全的。

五、創(chuàng)建model模型  

5.1 SQLAlchemy支持的數(shù)據(jù)類型

  • Integer:整形
  • String:字符串
  • Float:浮點型
  • DECIMAL:定點型
  • Boolean:bool
  • Date:日期類型
  • DateTime:日期+時間類型
  • Time:時間類型
  • Enum:枚舉類型
  • Text:文本類型
  • LongText:長文本類型

5.2 SQLAlchemy字段常用的約束

  • default:默認值
  • nullable:是否可空
  • primary_key:是否為主鍵
  • unique:是否唯一
  • autoincrement:是否自動增長
  • name:該屬性在數(shù)據(jù)庫中的映射字段

5.3 創(chuàng)建測試的model.py文件

    在項目的根目錄或者你需要的地方創(chuàng)建一個model.py文件,內容如下:

    說明1:為了測試效果,我們在這個model類中盡可能的多展示了不同字段的使用

    說明2:Base.metadata.create_all() 會將我們的模型自動映射到數(shù)據(jù)庫中,當然也可以手動去數(shù)據(jù)庫中創(chuàng)建表

    說明3:我們寫好的這個model類暫時還沒有使用呢 。

六、創(chuàng)建測試文件

  在項目根目錄下或者你需要的地方創(chuàng)建一個test.py文件,內容如下:

  這時我們在test.py中就只引入mysql_db和TestModel,其他的先不寫,然后使用python test.py運行該腳本,就會發(fā)現(xiàn)我們的model模型,已經(jīng)同步到數(shù)據(jù)庫中了

七、添加測試數(shù)據(jù)  

7.1 單條添加數(shù)據(jù)

    修改test.py文件如下,然后python test.py執(zhí)行

    執(zhí)行之后,我們去數(shù)據(jù)庫查看結果如下:    

    說明1:create_time,update_time,is_delete都是有默認值的字段,如果不設置,會自動顯示默認值。

    說明2:money字段總長度時9位,但是可以少于9位,不能多于9位,小數(shù)部位不足時補0

7.2 批量添加數(shù)據(jù)

    再來演示一下批量增加數(shù)據(jù),代碼如下還是在test.py中

    執(zhí)行后的結果如下:

八、修改刪除

8.1 修改

    剛才已經(jīng)演示了增加數(shù)據(jù)的代碼,下面我們看一下修改,代碼如下,還是在test.py文件中

    查看一下數(shù)據(jù)庫

8.2 刪除

    可以看到姓名和性別已經(jīng)修改成功。再來測試一下刪除數(shù)據(jù)

    可以看出,數(shù)據(jù)庫中已經(jīng)沒有id=1的數(shù)據(jù)了

九、查詢

  在進行查詢測試之前,先往數(shù)據(jù)庫中添加一下測試數(shù)據(jù)

9.1 query關鍵字

    在做查詢的時候我們通常query關鍵字,它類似于SQL中select 關鍵字,query參數(shù)通??梢蕴顚懭悈?shù)

  • model模型對象:指定查找這個模型中所有的字段
  • model模型對象中的屬性:可以指定只查找某個model中的幾個屬性字段
  • 聚合函數(shù):func.count(統(tǒng)計行的數(shù)量),func.avg(求平均數(shù)),func.max(求最大值),func.min(求最小值),func.sum(求和)

    查看一下打印結果

    說明1:在做查詢的時候 .first() 表示查詢第一個滿足條件的數(shù)據(jù)

    說明2:在做查詢的時候 .all() 表示查詢所有數(shù)據(jù)

    說明3:如果不是查詢全部字段,只查詢部分字段或者聚合函數(shù)的話,結果返回的是一個元組,通過下標取數(shù)據(jù)即可

9.2 filter關鍵字

    過濾是數(shù)據(jù)提取的一個很重要的功能,以下對一些常用的過濾條件進行解釋,并且這些過濾條件都是只能通過filter方法實現(xiàn),常用的方法有

  • 相等: ==
  • 不相等: !=
  • 模糊查詢:like(%xx$)
  • 包含:in_()
  • 不包含:~ in_() 注意 ~不是直接加在in前面的,注意看代碼示例
  • 空:==None 或者 is_(None)
  • 不為空: !=None 或者 isnot(None)
  • 并且: and_()或者也可以使用逗號連接多個條件
  • 或者:or_()

    打印結果如下:

9.3分頁查詢

    方式1:使用limit+offset實現(xiàn)

    查詢結果為:

    方式2:使用slice

    輸出結果為:

十、排序

  輸出結果為:

侯哥語錄:我曾經(jīng)是一個職業(yè)教育者,現(xiàn)在是一個自由開發(fā)者。我希望我的分享可以和更多人一起進步。分享一段我喜歡的話給大家:"我所理解的自由不是想干什么就干什么,而是想不干什么就不干什么。當你還沒有能力說不得時候,就努力讓自己變得強大,擁有說不得權利。"

到此這篇關于SQLAlchemy詳解的文章就介紹到這了,更多相關SQLAlchemy詳解內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論