octopus oc corelibs sql helpers
1.0.3
自動處理和格式化PL/SQL代碼的工具
create語句的對象。處理多對象文件的結果是不可預測的,因此所有工具( str_decoder除外)都會引起異常。唯一的函數DECODE_TO_STR試圖檢測線路編碼並將其重新編碼為UTF-8 。如果不可能編碼,則會提高價值。
decode_to_str(line, probables=None)
line - bytes對像用文本解碼probables帶有主要編碼的str list要檢查。默認值: ['cp866', 'cp1251', 'koi8-r']str (解碼並重新編碼為UTF-8 ) 將整個文件解碼到另一個文件。運行以獲取參數列表:
python -m oc_sql_helpers.str_decoder --help
PLSQLWrapper類是使用Oracle包裹的來源的工具。
包裝文件還有其他要求。請注意,沒有它可以使用包裝方法。這些是由於使用Oracle的原始wrap實用程序的使用,由於違反許可證,該軟件包未包含。您必須單獨安裝。
ORACLE_HOME環境變量要正確設置wrap Binary將放置在${ORACLE_HOME}/bin下,並且必須具有有效用戶的執行權限PLSQLWrapper() - 實例化該類的對象
方法
wrap_path(path_in, write_to=None)path_in具有絕對或相對路徑的str對像要包裝。write_to - 之一:None - 包裝結果將由此方法作為bytes對象返回file - 結果將寫入此處指定的類似文件的對象。必須以讀取二進制模式( 'w+b' )打開,並支持seek操作。str輸出文件,絕對或相對的路徑。結果將在那裡寫。必須具有擴展名 - 這是Oracle wrap實用程序FEATRUE。如果省略了擴展名,它會單獨附加.plb後綴。請始終指定擴展名write_towrap_buf(fl_in, write_to=None)fl_in file或file-like對象,以包裝數據。必須以二進制模式打開並支持seek操作( 'rb' )。write_to與wrap_path相同wrap_path相同unwrap_path(path_in, write_to=None)path_in具有絕對或相對路徑的str對象,要解開文件。write_to - 之一:None - 拆開結果將由此方法作為bytes對象返回file - 結果將寫入此處指定的類似文件的對象。必須以讀取二進制模式( 'w+b' )打開,並支持seek操作。str輸出文件,絕對或相對的路徑。結果將在那裡寫。write_tounwrap_buf(fl_in, write_to=None)fl_in file或file-like對象,以包裝數據。必須以二進制模式打開並支持seek操作( 'rb' )。write_to與unwrap_path相同unwrap_path相同包裝/將整個文件包裝到另一個文件。運行以獲取參數列表:
python -m oc_sql_helpers.wrapper --help
PLSQLNormalizer類是或PL/SQL代碼歸一化。
歸一化意味著與代碼樣式幾乎相同,但嚴格不太嚴格。這意味著即使從PL/SQL的角度來看,歸一化結果也可能是無法使用的。
默認歸一化為:
CREATE陳述之前的所有垃圾。CREATE語句本身被訂購為第一個陣列,直至AS (或IS WRAPPED )令牌,包括對象名稱,類型和架構。額外的空間字符和註釋被單個空間替換。CREATE語句)是基於大量的,包括架構和對象名稱。" ,那麼這些雙引號將在可能的情況下刪除。示例: "schema"."name"將在歸一化之後為SCHEMA.NAME ,而"another.schema"."another.name" "ANOTHER.SCHEMA"."ANOTHER.NAME"另一個標準化標誌:
uppercase :對象主體中的所有語言詞彙都將被覆蓋,除非文字no-comments :身體內部的所有評論,包括評論符號本身,都將被單個空間替換。no-spaces :所有重複的空間字符(空間本身,紐文,製表...)將被一般的單個空間代替。示例: var := 'the value' var := 'the value' 。請注意,在字面的'the value'中未完成替換。這個標誌可能不使用no-comments使用no-literals :所有字符串文字值將替換為空字符值。字面跡象本身並沒有改變。comments-only :丟棄整個文件內容,但註釋,包括自己的評論符號。每個評論將從新的行開始。這個標誌與上面的任何人都不兼容PLSQLNormalizer() - 實例化此類對象
方法
normalize_path(path, flags=None, lines=None, write_to=None)path str對象具有絕對或相對路徑的文件歸一化。flags - 歸一化標誌,來自PLSQLNormalizationFlags枚舉的整數list ,請參見下文。 None值表示僅默認( CREATE定義)歸一化。lines - int ,限制歸一化線(從源計數)。默認值: None ,表示整個源標準化write_to - 之一:None - 包裝結果將由此方法作為bytes對象返回file - 結果將寫入此處指定的類似文件的對象。必須以讀取二進制模式( 'w+b' )打開,並支持seek操作。str輸出文件,絕對或相對的路徑。結果將在那裡寫。必須具有擴展名 - 這是Oracle wrap實用程序FEATRUE。如果省略了擴展名,它會單獨附加.plb後綴。請始終指定擴展名write_tonormalize(fl, flags, lines=None write_to=None)fl之一:file或file-like對像以將數據歸一化。必須以二進制模式打開並支持seek操作( 'rb' )。str弦數據正常化bytes - “二進制”數據以歸一化flags - 與normalize_path相同lines - 與normalize_path相同write_to與normalize_path相同normalize_path相同is_sql(fl) - 檢查給出的數據受支持的PL/SQL代碼fl與normalize一樣bool ,包裝PL/SQL代碼是否is_sql_path(path) - 與is_sql相同,但參數被視為具有可能代碼的文件的路徑is_wrapped(fl) - 檢查給出的數據已包裝PL/SQL代碼fl與normalize一樣bool ,支持的PL/SQL代碼是否is_wrapped_path(path) - 與is_wrapped相同,但參數被視為具有可能代碼的文件的路徑is_wrappable(fl) - 檢查給出的數據已包裝PL/SQL代碼fl與normalize一樣bool ,在代碼中是否包含PL/SQL對象is_wrappable_path(path) - 與is_wrappable相同,但參數被視為具有可能代碼的文件的路徑PLSQLNormalizationFlags標誌的枚舉:
uppercaseno_commentsno_spacesno_literalscomments_only請參閱“標準化術語”部分的另一個標準化標誌章中的詳細說明。
將整個文件歸一化為另一個文件。運行以獲取參數列表:
python -m oc_sql_helpers.normalizer --help