Peewee
Peewee is a lightweight ORM similar to SQLAlchemy, supporting MySQL, SQLite, PostgreSQL, and more.
Connect
1 2 3
| from peewee import * mysql_db = MySQLDatabase('database', host='', user='', passwd='') mysql_db.connect()
|
Define models
1 2 3 4 5 6 7
| class Person(Model): name = CharField() birthday = DateField() is_relative = BooleanField()
class Meta: database = mysql_db
|
Use a base class when declaring multiple models:
1 2 3 4 5 6 7 8 9 10
| class BaseModel(Model): class Meta: database = mysql_db
class User(BaseModel): username = CharField()
class Tweet(BaseModel): user = ForeignKeyField(User, related_name='tweets') message = TextField()
|
Create tables
mysql_db.create_tables([User, Tweet])
Insert and update
1 2 3 4 5 6 7
| uncle_bob = Person(name='Bob', birthday=date(1960, 1, 15), is_relative=True) uncle_bob.save()
grandma = Person.create(name='Grandma', birthday=date(1935, 3, 1), is_relative=True)
grandma.name = 'Grandma L.' grandma.save()
|
Queries
1 2 3 4 5 6
| grandma = Person.select().where(Person.name == 'Grandma L.').get()
grandma = Person.get(Person.name == 'Grandma L.')
for pet in Pet.select().where(Pet.animal_type == 'cat'): print pet.name, pet.owner.name
|
MongoEngine
MongoEngine is an ODM for MongoDB.
Connect
1 2
| from mongoengine import * connect('tumblelog')
|
Models
1 2 3 4
| class User(Document): email = StringField(required=True) first_name = StringField(max_length=50) last_name = StringField(max_length=50)
|
Insert and update
1 2 3
| ross = User(email='[email protected]', first_name='Ross', last_name='Lawley').save() ross.first_name = 'Ross' ross.save()
|
Queries
1 2
| for post in Post.objects(tags='mongodb'): print(post.title)
|
References:
《peewee documentation》
《MongoEngine documentation》