电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python通用數(shù)據(jù)庫(kù)操作工具 pydbclib的使用簡(jiǎn)介

瀏覽:3日期:2022-07-01 15:11:27

pydbclib是一個(gè)通用的python關(guān)系型數(shù)據(jù)庫(kù)操作工具包,使用統(tǒng)一的接口操作各種關(guān)系型數(shù)據(jù)庫(kù)(如 oracle、mysql、postgres、hive、impala等)進(jìn)行增刪改查,它是對(duì)各個(gè)python數(shù)據(jù)庫(kù)連接驅(qū)動(dòng)包(如sqlalchemy、pymysql、cx_Oracle、pyhive、pyodbc、impala等)的封裝,依照python最簡(jiǎn)原則SQL占位符統(tǒng)一成 ’:[name]’ 這一種形式,這點(diǎn)和sqlalchemy是一樣的

安裝

pip3 install pydbclib簡(jiǎn)單使用

看下簡(jiǎn)單的查詢示例

from pydbclib import connect# 使用with上下文,可以自動(dòng)提交,自動(dòng)關(guān)閉連接with connect('sqlite:///:memory:') as db: db.execute(’create table foo(a integer, b varchar(20))’) # 統(tǒng)一使用’:[name]’形式的SQL的占位符 db.execute('insert into foo(a,b) values(:a,:b)', [{'a': 1, 'b': 'one'}]*4) print(db.read('select * from foo').get_one()) print(db.read('select * from foo').get_all()) print(db.read('select * from foo').to_df()) db.get_table('foo').insert({'a': 2, 'b': 'two'}) print(db.get_table('foo').find_one({'a': 2})) print(db.get_table('foo').find().get_all()) print(db.get_table('foo').find().to_df())

查詢結(jié)果記錄是以字典形式展現(xiàn),向庫(kù)里寫(xiě)入記錄也是字典形式,如果要使用原生元祖形式,查詢函數(shù)read里添加as_dict=False參數(shù)

接口文檔

數(shù)據(jù)庫(kù)連接,更多常用數(shù)據(jù)庫(kù)連接方式參考文章結(jié)尾

# connect函數(shù)有個(gè)driver參數(shù)決定你是通過(guò)哪個(gè)數(shù)據(jù)庫(kù)驅(qū)動(dòng)包去連接的# driver參數(shù)默認(rèn)值是sqlalchemy,即通過(guò)sqlalchemy驅(qū)動(dòng)包連接數(shù)據(jù)庫(kù)>>> db = pydbclib.connect('sqlite:///:memory:')>>> db = pydbclib.connect(':memory:', driver=’sqlite3’)# 也可以傳入驅(qū)動(dòng)包連接對(duì)象>>> import sqlite3>>> db = pydbclib.connect(driver=sqlite3.connect(':memory:'))>>> from sqlalchemy import create_engine>>> db = pydbclib.connect(driver=create_engine('sqlite:///:memory:'))原生SQL接口

1. 使用execute方法執(zhí)行SQL,和各數(shù)據(jù)庫(kù)連接包基本一致,不同點(diǎn)是它既可以單條執(zhí)行,也可以批量執(zhí)行(相當(dāng)于executemany),另外該方法的SQL占位符是’:[name]’形式

>>> record = {'a': 1, 'b': 'one'}>>> db.execute(’create table foo(a integer, b varchar(20))’)# 插入單條記錄,結(jié)果返回影響行數(shù)>>> db.execute('insert into foo(a,b) values(:a,:b)', record)1# 插入多條記錄>>> db.execute('insert into foo(a,b) values(:a,:b)', [record, record])2

2. 查詢數(shù)據(jù)

# 查詢結(jié)果只返回一條記錄>>> db.read_one('select * from foo'){’a’: 1, ’b’: ’one’}#read返回迭代器類型,用get方法獲取前幾條記錄,使用map對(duì)每條記錄進(jìn)行數(shù)據(jù)清洗>>> db.read('select * from foo').map(lambda x: {f'foo.{k}': v for k,v in x.items()}).get(2)# as_dict=False返回原生元祖記錄>>> db.read('select * from foo', as_dict=False).get(2)[(1, ’one’), (1, ’one’)]# 也可以直接for遍歷>>> for r in db.read('select * from foo'):... print(r)... {’a’: 1, ’b’: ’one’}{’a’: 1, ’b’: ’one’}{’a’: 1, ’b’: ’one’}# 轉(zhuǎn)換成pandas dataframe對(duì)象, 前提已經(jīng)安裝了pandas>>> db.read('select * from foo').to_df() a b0 1 one1 1 one2 1 one

3. 提交、回滾、關(guān)閉連接

>>> db.rollback()>>> db.commit()>>> db.close()表級(jí)別操作的SQL接口封裝

1. 插入記錄

# 插入單條和插入多條,輸入?yún)?shù)字典的鍵值必須和表中字段同名>>> db.get_table('foo').insert({'a': 1, 'b': 'one'})1>>> db.get_table('foo').insert([{'a': 1, 'b': 'one'}]*10)10

2. 查詢記錄

# 查詢字段a=1第一條記錄>>> db.get_table('foo').find_one({'a': 1}){’a’: 1, ’b’: ’one’}# 也可以直接寫(xiě)成sql條件表達(dá)式,其他接口的條件參數(shù)類似都可以是表達(dá)式>>> db.get_table('foo').find_one('a=1'){’a’: 1, ’b’: ’one’}# 查詢字段a=1所有記錄,find返回迭代器對(duì)象同上面read方法>>> db.get_table('foo').find({'a': 1}).get_all()[{’a’: 1, ’b’: ’one’},...{’a’: 1, ’b’: ’one’}]

3. 更新記錄

# 將a=1那條記錄的b字段值更新為'first'>>> db.get_table('foo').update({'a': 1}, {'b': 'first'})11>>> db.get_table('foo').find({'a': 1}).get_one(){’a’: 1, ’b’: ’first’}

4. 刪除記錄

# 將a=1那條記錄刪除>>> db.get_table('foo').delete({'a': 1})11>>> db.get_table('foo').find({'a': 1}).get_all()[]常用數(shù)據(jù)庫(kù)連接

1. Common Driver

# 使用普通數(shù)據(jù)庫(kù)驅(qū)動(dòng)連接,driver參數(shù)指定驅(qū)動(dòng)包名稱# 例如pymysql包driver=’pymysql’,connect函數(shù)其余的參數(shù)和driver參數(shù)指定的包的創(chuàng)建連接參數(shù)一致# 連接mysqldb = pydbclib.connect(user='user', password='password', database='test', driver='pymysql')# 連接oracledb = pydbclib.connect(’user/password@local:1521/xe’, driver='cx_Oracle')# 通過(guò)odbc方式連接db = pydbclib.connect(’DSN=mysqldb;UID=user;PWD=password’, driver='pyodbc') # 通過(guò)已有驅(qū)動(dòng)連接方式連接import pymysqlcon = pymysql.connect(user='user', password='password', database='test')db = pydbclib.connect(driver=con)

2. Sqlalchemy Driver

# 使用Sqlalchemy包來(lái)連接數(shù)據(jù)庫(kù),drvier參數(shù)默認(rèn)為’sqlalchemy’# 連接oracledb = pydbclib.connect('oracle://user:password@local:1521/xe')# 連接mysqldb = pydbclib.connect('mysql+pyodbc://:@mysqldb')# 通過(guò)已有engine連接from sqlalchemy import create_engineengine = create_engine('mysql+pymysql://user:password@localhost:3306/test')db = pydbclib.connect(driver=engine)

使用過(guò)程中有任何疑問(wèn),歡迎評(píng)論交流項(xiàng)目地址pydbclib

以上就是python通用數(shù)據(jù)庫(kù)操作工具 pydbclib的使用簡(jiǎn)介的詳細(xì)內(nèi)容,更多關(guān)于python 數(shù)據(jù)庫(kù)操作工具pydbclib的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 红酒招商加盟-葡萄酒加盟-进口红酒代理-青岛枞木酒业有限公司 | 粉末冶金-粉末冶金齿轮-粉末冶金零件厂家-东莞市正朗精密金属零件有限公司 | 电液推杆生产厂家|电动推杆|液压推杆-扬州唯升机械有限公司 | 砖机托板价格|免烧砖托板|空心砖托板厂家_山东宏升砖机托板厂 | 高铝矾土熟料_细粉_骨料_消失模_铸造用铝矾土_铝酸钙粉—嵩峰厂家 | 工业胀紧套_万向节联轴器_链条-规格齐全-型号选购-非标订做-厂家批发价格-上海乙谛精密机械有限公司 | 亿立分板机_曲线_锯片式_走刀_在线式全自动_铣刀_在线V槽分板机-杭州亿协智能装备有限公司 | 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 避光流动池-带盖荧光比色皿-生化流动比色皿-宜兴市晶科光学仪器 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | 智能化的检漏仪_气密性测试仪_流量测试仪_流阻阻力测试仪_呼吸管快速检漏仪_连接器防水测试仪_车载镜头测试仪_奥图自动化科技 | 冷凝水循环试验箱-冷凝水试验箱-可编程高低温试验箱厂家-上海巨为(www.juweigroup.com) | 济南轻型钢结构/济南铁艺护栏/济南铁艺大门-济南燕翔铁艺制品有限公司 | 钢托盘,铁托盘,钢制托盘,镀锌托盘,饲料托盘,钢托盘制造商-南京飞天金属13260753852 | 紧急切断阀_气动切断阀_不锈钢阀门_截止阀_球阀_蝶阀_闸阀-上海上兆阀门制造有限公司 | 高低温万能试验机-复合材料万能试验机-馥勒仪器| 移动机器人产业联盟官网| 万烁建筑设计院-建筑设计公司加盟,设计院加盟分公司,市政设计加盟 | 搪瓷反应釜厂家,淄博搪瓷反应釜-淄博卓耀 | 三氯异氰尿酸-二氯-三氯-二氯异氰尿酸钠-优氯净-强氯精-消毒片-济南中北_优氯净厂家 | 不锈钢/气体/液体玻璃转子流量计(防腐,选型,规格)-常州天晟热工仪表有限公司【官网】 | 排烟防火阀-消防排烟风机-正压送风口-厂家-价格-哪家好-德州鑫港旺通风设备有限公司 | 哈尔滨京科脑康神经内科医院-哈尔滨治疗头痛医院-哈尔滨治疗癫痫康复医院 | 红立方品牌应急包/急救包加盟,小成本好项目代理_应急/消防/户外用品加盟_应急好项目加盟_新奇特项目招商 - 中红方宁(北京) 供应链有限公司 | 爆破器材运输车|烟花爆竹运输车|1-9类危险品厢式运输车|湖北江南专用特种汽车有限公司 | 塑胶地板-商用PVC地板-pvc地板革-安耐宝pvc塑胶地板厂家 | 电采暖锅炉_超低温空气源热泵_空气源热水器-鑫鲁禹电锅炉空气能热泵厂家 | RFID电子标签厂家-上海尼太普电子有限公司 | 齿辊分级破碎机,高低压压球机,立式双动力磨粉机-郑州长城冶金设备有限公司 | bng防爆挠性连接管-定做金属防爆挠性管-依客思防爆科技 | loft装修,上海嘉定酒店式公寓装修公司—曼城装饰 | 洗瓶机厂家-酒瓶玻璃瓶冲瓶机-瓶子烘干机-封口旋盖压盖打塞机_青州惠联灌装机械 | MTK核心板|MTK开发板|MTK模块|4G核心板|4G模块|5G核心板|5G模块|安卓核心板|安卓模块|高通核心板-深圳市新移科技有限公司 | 中天寰创-内蒙古钢结构厂家|门式刚架|钢结构桁架|钢结构框架|包头钢结构煤棚 | 沈阳真空机_沈阳真空包装机_沈阳大米真空包装机-沈阳海鹞真空包装机械有限公司 | 工业车间焊接-整体|集中除尘设备-激光|等离子切割机配套除尘-粉尘烟尘净化治理厂家-山东美蓝环保科技有限公司 | 丝杆升降机-不锈钢丝杆升降机-非标定制丝杆升降机厂家-山东鑫光减速机有限公司 | 棉柔巾代加工_洗脸巾oem_一次性毛巾_浴巾生产厂家-杭州禾壹卫品科技有限公司 | 常州企业采购平台_常州MRO采购公司_常州米孚机电设备有限公司 | 硬齿面减速机_厂家-山东安吉富传动设备股份有限公司 | 贵州水玻璃_-贵阳花溪闽兴水玻璃厂 | 圈酒招商网【jiushuitv.com】_酒水招商_代理_加盟平台 |