python的Pony ORM框架總結

2021-09-03 00:07:10 字數 1389 閱讀 7707

最近學校裡辦了python興趣班,剛學完python的基礎語法就講了這個pony框架,以下是我上課記錄的某些關鍵點的筆記

python 2提供了兩種字串型別 - str(位元組字串)和unicode(unicode字串),而在python 3中,str型別表示unicode字串,並且剛剛刪除了unicode。

從pony release 0.6開始,新增了對python 3的支援,而不是unicode和longunicode,我們建議分別使用str和longstr型別。

longstr和longunicode作為clob儲存在資料庫中。

緩衝區和位元組型別在資料庫中儲存為二進位制(blob)型別也就是二進位製大物件長度為兩個g。

如果兩個實體具有一對一關係,則通常意味著它們可以組合成單個實體。

如果您的資料圖有很多一對一的關係,那麼它可能表示您需要重新考慮實體定義。

在括號中,在屬性型別之後,您可以指定屬性選項。

每個屬性可以是以下型別之一:

required 必須的

optional 可選的

primarykey 主鍵

set 集合

sqlite的python驅動程式不會在select語句上啟動事務。它只在可以修改資料庫的語句上開始事務:insert,update,delete。其他驅動程式在任何sql語句上啟動事務,包括select。

pony在幾個階段快取資料以提高效能。它快取:

生成器表示式轉換的結果。如果在程式中多次使用相同的生成器表示式查詢,則它將僅轉換為sql一次。此快取對整個程式是全域性的,不僅適用於單個資料庫會話。

從資料庫建立或載入的物件。pony將這些物件儲存在identity map中。在離開db_session()作用域或事務回滾時清除此快取記憶體。

查詢結果。如果再次使用相同的引數呼叫相同的查詢,pony將從快取返回查詢結果。一旦任何實體例項發生更改,就會清除此快取。在離開db_session()作用域或事務回滾時清除此快取記憶體。

悲觀鎖假設一定會出現執行緒衝突的執行緒鎖

樂觀鎖假設不會出現衝突的執行緒的鎖,但是為了防止執行緒的鎖的衝突,在儲存的時檢查是否修改

事務的傳播行為

如果兩個銀行分行將嘗試同時將全部金額轉移到不同的帳戶,則將執行這兩個操作。

每個函式都將通過驗證,最後乙個事務將覆蓋另乙個事務的結果。

這種異常稱為「丟失更新」。

隔離是一種屬性,用於定義乙個事務所做的更改何時對其他併發事務隔離級別可見。ansi sql標準定義了四個隔離級別:

read uncommitted - 最低隔離級別

read committed

repeatable read

serializable -最高隔離級別

spring 有五個隔離級別,一般的資料庫只有四個隔離級別

pony不會自動提交事務

控制python資料框的資料精度

需要從python連資料庫提取資料的轉為資料框,之前也博文也寫過如何將資料庫資料轉為資料框。有乙個問題是,原資料庫的資料是保留15位小數的資料,例如 20.000000000000000,但是如果轉為pd.dataframe後,就只有六位小數。這是因為在資料框中預設的精度是乙個固定值,現在不希望會損...

按鈕彈框 python上selenium的彈框操作

selenium之彈框操作 1.分類 彈框型別自見解分為四種 1,頁面彈框 2,警告提示框 alert 3,確認訊息框 confirm 4,提示訊息對話 prompt 2.操作 1,頁面彈框 頁面彈框是屬於html裡面的元素,它是由使用者在操作頁面的時候在本頁面彈出的。所以科研直接在頁面上定位到 步...

python資料框基本操作

dataframe行數 len data dataframe列數 len data.ix 1 檢視行數和列數 data.shape from numpy import m,n shape data m為行數,n為列數資料型別 type data 生成新資料框 df pd.dataframe np.a...