peewee
peewee 是Python中常用的ORM模块,类似SQLAlchemy,支持连接MySQL/SQLite/Postgresql 等数据库。
连接数据库
以连接MySQL为例:
1 | from peewee import * |
定义数据模型 (Model)
定义一个Person模型,对应数据库中的person表:
1 | class Person(Model): |
如果要创建多个模型可以定义一个模型基类:
1 | class BaseModel(Model): |
创建表
mysql_db.create_tables([User, Tweet])
插入与更新数据
可以直接通过类新建数据:
1 | uncle_bob = Person(name='Bob', birthday=date(1960, 1, 15), is_relative=True) |
调用save()
方法之后,数据会被插入到数据库中,返回此操作影响的数据数量。
或者通过create()
方法新建并插入:
1 | grandma = Person.create(name='Grandma', birthday=date(1935, 3, 1), is_relative=True) |
如果要更新数据,直接修改实例属性值即可:
1 | grandma.name = 'Grandma L.' |
查找数据
可以通过以下两种方法查找数据:
grandma = Person.select().where(Person.name == 'Grandma L.').get()
grandma = Person.get(Person.name == 'Grandma L.')
如果有多个结果,可以用循环依次取出:
1 | query = Pet.select().where(Pet.animal_type == 'cat') |
MongoEngine
与关系型数据库的ORM相对应,NoSQL有ODM。
MongoEngine是Mongodb的ODM模块。
连接数据库
1 | from mongoengine import * |
定义数据模块(model)
1 | class User(Document): |
插入与更新数据
插入:
1 | ross = User(email='ross@example.com', first_name='Ross', last_name='Lawley').save() |
更新:
1 | ross.first_name = 'Ross' |
查找数据
1 | for post in Post.objects(tags='mongodb'): |
参考资料: