python ORM 模块peewee(三): Model的建立
生活随笔
收集整理的這篇文章主要介紹了
python ORM 模块peewee(三): Model的建立
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先,需要理清一下python數據與數據庫數據是怎么對應的:
- Model類:表
- Field類:表上的列的類型
- Model實例:表上的一行數據
1. Model Class主要描述的是數據表以及其繼承的順序
這里主要是需要對Model類中的Meta類的定義規范進行小結:
除了db_table和table_alias之外,其他的字段均可以被繼承
可以看到,peewee的主鍵,索引和其他約束均可以在meta中定義。
非整型的主鍵
當主鍵為非auto_increment時,插入數據調用save()會出錯,應該調用save(force_insert=True)
單列索引
多列索引
2. Field Class主要描述python數據類型與數據庫數據類型的對應關系和數據表之間的關系(外鍵,多對多)
Filed在peewee.py中有基本數據類型的定義
# 初始化函數,各個字段的默認值 def __init__(self, null=False, index=False, unique=False,verbose_name=None, help_text=None, db_column=None,default=None, choices=None, primary_key=False, sequence=None,constraints=None, schema=None)在playhouse.fields中定義的額外字段
包括
PasswordFieldManyToManyFieldCompressedFieldPickledFieldAESEncryptedField然而peewee中并不推薦使用這些Field, 例如ManyToManyField,完全可以用一個含兩個外鍵的關系表來維護,ManyToMany關系在ORM中實際上也正是這樣來實現的,并且使用這種方式可以描述更加復雜的關系。
自定義field字段
# 1. 定義MyField類 class MyField(Field):# Field的標簽db_field = 'my'# 返回數據庫類型的值def db_value(value):pass# 返回python類型的值def python_value(value):pass# 2. 將自定義Field子類與數據表中的列關聯,有兩種方法: # 1. 創建數據庫時,給fields字段賦值 db = MySQLDatabase('my_db', fields={'my': 'my'}) # 2. 調用register_fields函數 db.register_fields({'my':'my'})總結
以上是生活随笔為你收集整理的python ORM 模块peewee(三): Model的建立的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Win7快速清理痕迹】
- 下一篇: iperf带宽测试