简单sqlite3 orm
sorm的Python项目详细描述
简单的sqlite orm-“sorm”
允许使用python对象而不是sqlite语句。
安装
您可以使用以下命令安装“sorm”:
$ mkdir <installation dir> $ cd /<installation dir> $ git clone git://github.com/max-kim/sorm.git $ cd sorm
要求
- Python 3.6(或更高版本)
用法
如何建立连接并创建表:
fromsormimportcreate_connectionfromsormimportIntType,FloatType,StrType,BytesType,ForeignKey,Base,RelationshipfromsormimportBase,ForeignKey,Relationshipconnection=create_connection('sorm_test.db',echo=True)classGroup(Base):__tablename__='groups'id=IntType(__tablename__,'id',primary_key=True)group_name=StrType(__tablename__,'group_name',nullable=False)classUser(Base):__tablename__='users'id=IntType(__tablename__,'id',primary_key=True)user_name=StrType(__tablename__,'user_name',nullable=False)group_id=IntType(__tablename__,'group_id',ForeignKey(Group,'id'))group=Relationship(group_id)connection=create_connection('sorm_test.db',echo=True)connection.create_table(Group,User)# Also you can use next syntax to create table:# <<< Group.create(connection)
important:要获得最佳方式,请在每个表中使用“id”属性作为主键。
使用'echo=true'作为'create_connection'参数来显示每个SQL查询。
如何插入数据:
group=Group(group_name='Admins')connection.add(group)connection.add(Group(**{'group_name':'Users'}))connection.add(User(**{'user_name':'Max','group_id':None}))connection.add(User(**{'user_name':'Alex','group_id':None}))
将自动添加和填充字段“id”。
如何选择数据:
groups=connection.query(Group).order_by(Group.id).all()
结果以对象元组的形式返回:
print(type(group))# >>> <class 'tuple'>forgroupingroups:print('The group id = {}, group name is {}.'.format(group.id,group.group_name))
调用“first()”方法时,如果查询与任何数据都不匹配,则会得到一个对象或“none”。
admin_group=connection.query(Group).where((Group.group_name,'=','Admins')).first()
如何进行更新:
ifadmin_group:user=connection.update(User).where((User.user_name,'=','Alex'),(User.id,'=',2)).value(group_id=admin_group.id)print(user)
update query随时返回对象元组,如果条件不适合,则返回空元组。
删除数据:
connection.delete(Group).where((Group.id,'>=',3))
或:
some_user=User(id=5)connection.delete(some_user)# connection.delete(some_user) == connection.delete(User).where((User.id, '=', 5))
删除语句随时返回“none”。
其他
这个库是otus python web-dev的homewokr。