python第三方庫推薦 - 優雅的數據驗證庫schema

jopen 10年前發布 | 15K 次閱讀 schema Python開發

這個在驗證表單、配置、客戶端傳過來的數據等很有用。

安裝

easy_install schema 或 pip install schema

 

基本用法

from schema import Schema
Schema(xxx).validate(data)
其中參數xxx可以是:

  • 基本數據類型比如int/float/list/tuple/set/str等。
  • 函數
  • list, tuple, set, frozenset, dict實例
  • 某個重寫了validate方法的類。比如Use。
  • </ul>
    如果驗證通過,會返回驗證通過的數據。

    如果驗證不通過,會拋出SchemaError異常。

     

    示例

    基本類型
    >>Schema(int).validate(123)

    函數
    >>Schema(os.path.exists).validate('/path/to/file')

    先轉換再驗證
    >>from schema import Use
    >>Schema(Use(int)).validate('123')

    如果Schema的參數是一個容器,list, tuple, set or frozenset,那么待驗證的數據也必須是個對應的容器,且容器元素在枚舉內。
    >>Schema([1, 0]).validate([1, 1, 0, 1])
    >>Schema((int, float)).validate((5, 7, 8, 'not int or float here'))

    可以對字典的key和value驗證
    >>Schema({'name': str, 'age': lambda n: 18 < 99}).validate({'name': 'Sue', 'age': 28})
    >>Schema({str: int,  # 代表字符串的key的value類型必須是整型
            int: None})  #整型的key的value必須是None
    如果只想對部分鍵值驗證,而不管其它的,可以用object。
    >>Schema({'id': int,str: object}).validate({'id':10,'age':2,'name':'Rooney'}) 

    可選、與、或
    >>from schema import Optional,And, Or
    >>Schema({'name': str, Optional('occupation'): str}).validate({'name': 'Sam'})
    >>Schema({'age': And(int, lambda n: 0 < n < 99)}).validate({'age': 7})
    >>Schema(And(Or(int, float), lambda x: x > 0)).validate(3.1415)

     

    項目地址

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!