quick_orm是一个Python的ORM框架.安装和使用超级简单,可以一分钟上手!基于SQLAlchemy构建,在功能上是SQLAlchemy的超集.quick_orm最大的特点是以非常简单易学易用的形式提供了完备强大的功能.
安装
pipinstallquick_orm
HelloWorld示例
fromquick_orm.coreimportDatabasefromsqlalchemyimportColumn,String__metaclass__=Database.DefaultMetaclassUser:name=Column(String(30))Database.register()if__name__=='__main__':db=Database('sqlite://')#databaseurls:https://docs.sqlalchemy.org/en/latest/core/engines.html#database-urlsdb.create_tables()#createtables,youdon'thavetowriteanySQL.user=User(name='HelloWorld')db.session.add_then_commit(user)#commitusertodatabase.user=db.session.query(User).get(1)print'Mynameis',user.nameprint'created_at',user.created_at#created_atandupdated_attimestampsareaddedautomatically.print'updated_at',user.updated_atuser.name='TylerLong'db.session.commit()#commitchangestodatabase.print'Mynameis',user.nameprint'created_at',user.created_atprint'updated_at',user.updated_at
问答网站数据建模示例
fromquick_orm.coreimportDatabasefromsqlalchemyimportColumn,String,Text__metaclass__=Database.DefaultMetaclassUser:name=Column(String(70))@Database.many_to_one(User)classPost:content=Column(Text)classQuestion(Post):title=Column(String(70))@Database.many_to_one(Question)classAnswer(Post):pass@Database.many_to_one(Post)classComment(Post):pass@Database.many_to_many(Post)classTag:name=Column(String(70))Database.register()#以上是建模部分,下面是如何使用数据模型if__name__=='__main__':db=Database('sqlite://')db.create_tables()user1=User(name='TylerLong')user2=User(name='PeterLau')tag1=Tag(name='quick_orm')tag2=Tag(name='nice')question=Question(user=user1,title='Whatisquick_orm?',content='Whatisquick_orm?',tags=[tag1,])question2=Question(user=user1,title='Haveyoutriedquick_orm?',content='Haveyoutriedquick_orm?',tags=[tag1,])answer=Answer(user=user1,question=question,tags=[tag1,],content='quick_ormisaPythonORMframeworkwhichenablesyoutogetstartedinlessthanaminute!')comment1=Comment(user=user2,content='goodquestion',post=question)comment2=Comment(user=user2,content='niceanswer',post=answer,tags=[tag2,])db.session.add_all_then_commit([question,question2,answer,comment1,comment2,tag1,tag2,])question=db.session.query(Question).get(1)print'tagsforquestion"{0}":"{1}"'.format(question.title,','.join(tag.namefortaginquestion.tags))print'newcommentforquestion:',question.comments.first().contentprint'newcommentforanswer:',question.answers.first().comments.first().contentuser=db.session.query(User).filter_by(name='PeterLau').one()print'PeterLauhasposted{0}comments'.format(user.comments.count())tag=db.session.query(Tag).filter_by(name='quick_orm').first()print'{0}questionsaretagged"quick_orm"'.format(tag.questions.count())
评论