dblink工具使对exists表的操作更容易。

dblink的Python项目详细描述


PyPI versionBuild Statuscodecov

Aimed for easily using query, insert, update and delete with an exist table, the filter query syntax likes Django’s. You can find out the simple usage in the code below.

假设您有两个表:usersaddresses创建者:

CREATETABLEusers(idINTEGERNOTNULL,nameVARCHAR(50),fullnameVARCHAR(50),passwordVARCHAR(12),PRIMARYKEY(id));CREATETABLEaddresses(idINTEGERNOTNULL,email_addressVARCHARNOTNULL,user_idINTEGER,PRIMARYKEY(id),FOREIGNKEY(user_id)REFERENCESusers(id));

可以使用^ a4}链接到数据库中的生存表。

fromdblinkimportDatabase,Tabledb=Database(url='sqlite:///:memory:')user_table=Table('users',db)# ...db.close()withDatabase(url='postgresql://scott:tiger@localhost/mydatabase')asdb:address_table=Table('addresses',db)# ...

这里有一个简单的例子。

"""
Suppose you have two table: users and addresses.
"""fromdblinkimportDatabase,TablewithDatabase('sqlite:///:memory:')asdb:table_user=Table('users',db)table_address=Table('addresses',db)# show descriptionprint(table_user.description)print(table_address.description)# chain query, you can call delete on the single table resulttable_user.query.filter(id=1).one_or_none()table_user.query.filter(id__gte=2) \
                    .order_by('name') \
                    .values_list('id','name')table_user.query.filter(id__in=[1,2,3]) \
                    .filter(name__startswith='Yu').all()table_user.query.order_by('-name') \
                    .values_list('fullname',flat=True,distinct=True)table_user.query.distinct('name').values_list('name',flat=True)table_user.query.filter(id__in=[1,2,3]).delete()# join querytable_user.join(table_address) \
              .filter(id__lt=10000) \
              .filter(email_address__contains='gmail') \
              .filter(**{'addresses.id__gte':100}) \
              .values_list('user_id','name','email_address',table_address.id,'users.fullname')# get or insertinstance,create=table_user.get_or_insert(id=1,name='jone')# single record operation.table_user.insert({'id':1,'name':'YuJun','password':'psw'})table_user.update({'id':1,'name':'skyduy','password':'psw'},unique_fields=['id'],update_fields=['name','password'])table_user.insert_or_update({'id':1,'name':'skyduy','password':'psw'},unique_fields=['id'],update_fields=['name','password'])table_user.delete({'id':1,'name':"I don't matter"},unique_fields=['id'])# bulk operationitems=[{'id':1,'name':'yujun','password':'haha'},{'id':2,'name':'skyduy','password':'aha'},]unique_fields=['id']update_fields=['name']table_user.bulk_insert(items)table_user.bulk_delete(items,unique_fields)table_user.bulk_update(items,unique_fields,update_fields)table_user.bulk_insert_or_update(items,unique_fields,update_fields)

V0.2.1(2018/05/09)

  • 添加编码选项。
  • 改善包装依赖性。

v0.2.0(2018/03/24)

  • 修复错误。
  • 在本地sqlite db上操作时关闭游标时出错。
  • Bug in bulk_insert_或_update。
  • 改进错误提示。

V0.1.2(2018/02/05)

  • 初次发布。

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

推荐PyPI第三方库


热门话题
java Jetty是否有请求缓存?   数组中的java 2值与我的数据帧中的2列对应   对象序列化期间的java DbUtils类型转换问题   java根面板中不显示所有单独的面板   java通过代理或SSH隧道连接Hbase API   java困惑:与经典MVC控制器相比,JSF2中bean的角色   java在我的Triangle类中“找不到符号错误”   java在Android中设置从路径到自定义按钮的图像   java不绕轨道旋转椭圆   AES在socket上搞砸了序列化/反序列化。无效的流标头。JAVA   java在数组中搜索term和if语句   线程“main”java中出现异常。util。正则表达式。PatternSyntaxException:在索引0附近悬挂元字符“*”*   Websphere上的java Google反射无法打开url连接   java为什么inc/dec频道什么都不做?   java KeyListener无法访问keyPressed方法