dblink工具使对exists表的操作更容易。
dblink的Python项目详细描述
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.
假设您有两个表:users和addresses创建者:
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)
- 初次发布。