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如何计算大于平均值的数字的百分比。?   JavaFX中后台执行任务的服务   xml解析用于解析java中推荐的xml解析器的小文档   java Nativescript+无法实例化接收器。。。。没找到上课的机会   maven是在数百个Java测试类上应用自定义JUnit测试运行程序的更简单方法   泛型如何引用接口在Java中实现的类类型?   java序列化程序SimpleXML只发送第一行   java字符串组合/排列   java无法创建EMRclient Sdkclientexception   JavaMaven不生成“persistence.xml”文件   java找不到主要方法   java中的正则表达式正负双精度   接口对于我试图解决的问题,有Java设计模式吗?   java在创建bean时获取异常   java如何创建<?使用JCodeModel扩展子类型>?   java在javafx中制作搜索栏   java Compare Hashmap with List=new Arraylist()   java接口与具体类