简单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。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
编译器构造为什么在Java中允许初始化对Null的引用?   java手动调用javax的actionPerformed。摆动计时器   使用git分支的java Maven版本控制   Java8句子流   java JPA OneToOne和OneToMany实体实例化/创建   java如何将值添加到列表<Map<String,Object>>?   java如何使用ComboBox在一个框架内更改JPanel。getSelectedIndex()   java在比较XML和xmlunit时忽略文本差异   java无法从其他pc连接到本地主机   Java中分配对象id的优雅方式   Java中静态变量的使用   java试图从Neteller获取OAuth访问令牌时产生错误:“服务器返回HTTP响应代码:401表示URL”   Java:基元类型是否会影响性能?   java可以让hasNext()不区分大小写吗?   基于AutoCompleteTextView建议属性或AutoCompleteTextView值的java Android搜索   java流文件到firefox浏览器有时无法打开应用程序对话框   在没有ArrayList的Java中返回数组中的搜索结果   复制java。木卫一。IOException:数据错误(CRC)   java为什么我在尝试删除Facebook测试用户时会出现“方法未实现”错误   java如何使用JNA调用SetProcessReliationPolicy