from sqlalchemy import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
engine = create_engine('sqlite:///sqlalchemy.db', echo=False)
Base = declarative_base()
Session = sessionmaker(bind=engine)
session = Session()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(40))
age = Column(Integer)
password = Column(String)
Base.metadata.create_all(engine)
def create_user():
session.add(User(name='Mary', age=30, password='secret'))
session.commit()
%timeit create_user()
%timeit session.query(User).first()
session.close()
10 loops, best of 3: 143 ms per loop 1000 loops, best of 3: 573 µs per loop
from peewee import *
db = SqliteDatabase('peewee.db')
class User(Model):
name = CharField(max_length=40)
age = IntegerField()
password = CharField()
class Meta:
database = db
User.create_table(fail_silently=True)
%timeit User.create(name='Mary', age=30, password='secret')
%timeit User.select()[0]
10 loops, best of 3: 143 ms per loop 10000 loops, best of 3: 122 µs per loop
from __future__ import unicode_literals, division
sqlalchemy_line_count, peewee_line_count = 31, 20
print 'Code length: peewee is %.2f× shorter than SQLAlchemy' % (sqlalchemy_line_count / peewee_line_count)
print 'SQL INSERT : peewee is %.2f× faster than SQLAlchemy' % (143 / 143)
print 'SQL SELECT : peewee is %.2f× faster than SQLAlchemy' % (573 / 122)
Code length: peewee is 1.55× shorter than SQLAlchemy SQL INSERT : peewee is 1.00× faster than SQLAlchemy SQL SELECT : peewee is 4.70× faster than SQLAlchemy