日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

瀏覽:35日期: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ù)里寫入記錄也是字典形式,如果要使用原生元祖形式,查詢函數(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’}# 也可以直接寫成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)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美a级片一区| 精品国产黄a∨片高清在线| 免费精品国产| 爽好久久久欧美精品| 日本不卡在线视频| 福利精品在线| 欧美日韩国产高清| 视频一区二区三区在线| 久久精品99久久久| 日韩国产一区二区三区| 伊人精品视频| 国产日韩欧美一区二区三区 | 久久精品国产免费| 国产一区清纯| 久久国产视频网| 亚洲不卡av不卡一区二区| 在线精品一区| 国产精品xx| 亚洲激情偷拍| 国产日韩欧美三区| 欧美大黑bbbbbbbbb在线| 97se亚洲| 99国产精品免费视频观看| 中文字幕乱码亚洲无线精品一区| 麻豆免费精品视频| 99xxxx成人网| 精品视频黄色| 免费视频一区二区| 日韩大片免费观看| 日韩动漫一区| 欧美理论视频| 麻豆精品新av中文字幕| 午夜一级在线看亚洲| 国产精品视频首页| 免费国产自久久久久三四区久久| 国产精品久久久久久久久久妞妞| 久久五月天小说| 国产精品一区二区三区av| 欧美日韩国产一区二区三区不卡 | 亚洲狼人精品一区二区三区| 日本一区二区高清不卡| 美国三级日本三级久久99| 日本不良网站在线观看| 欧美精品中文| 亚洲高清二区| 国产成人77亚洲精品www| 亚洲精品激情| 亚洲精品国产偷自在线观看| 麻豆精品在线播放| 日韩一区二区三区精品视频第3页| 韩国三级一区| 国产精品sm| 亚洲精选成人| 国精品一区二区三区| 久久精品国产网站| 日韩高清在线一区| 国产精品美女| 欧美午夜精彩| 久久青青视频| 国产精品地址| 日韩高清欧美激情| 蜜臀精品久久久久久蜜臀| 四虎884aa成人精品最新| 久久影院资源站| 亚洲精品乱码日韩| 久久国产精品毛片| 在线国产一区| 欧美日韩在线播放视频| 国产盗摄——sm在线视频| 国产精品白丝av嫩草影院| 日本电影久久久| 亚洲区第一页| 视频一区在线播放| 欧美二区视频| 精品视频一区二区三区四区五区 | 99riav国产精品| 欧美va天堂| 亚洲国产影院| 蜜桃精品在线| 樱桃视频成人在线观看| 日韩.com| 亚洲黄色网址| а√在线中文在线新版| 捆绑调教美女网站视频一区| 国产精品夜夜夜| 日韩黄色在线观看| 亚洲18在线| 亚洲丝袜美腿一区| 视频一区二区不卡| 亚洲综合日韩| 久久成人精品| 亚洲我射av| 亚洲精品观看| 亚洲精品九九| 亚洲免费观看高清完整版在线观| 亚洲自啪免费| 蜜臀av国产精品久久久久| 久久午夜精品| 亚洲理论在线| 日本精品在线播放| 日本久久一区| 国产精品久久久一区二区| 久久成人高清| 久久伊人国产| 伊人久久国产| 久久久9色精品国产一区二区三区| 少妇久久久久| 免费av一区| 美女精品在线观看| 亚欧洲精品视频在线观看| 日韩精品一区二区三区中文在线| 亚州av日韩av| 久久wwww| 日韩一区电影| 亚洲性视频h| 99亚洲视频| 亚洲精品四区| 国产精品激情| 亚洲精品一区三区三区在线观看| 极品裸体白嫩激情啪啪国产精品| 精品在线播放| 鲁大师影院一区二区三区| 日韩国产欧美三级| 美女免费视频一区| 亚洲精品.com| 午夜在线精品偷拍| 国产日韩欧美| 成人片免费看| 性欧美长视频| 国产日韩三级| 不卡一二三区| 99视频一区| 国产精品伊人| 精精国产xxxx视频在线播放| 在线一区欧美| 国产精品自拍区| 91精品啪在线观看国产18| 在线国产精品一区| 精品国产不卡| 一区二区视频欧美| 久久国产乱子精品免费女| 高清在线一区| 中文精品视频| 国产精品蜜月aⅴ在线| 亚洲成人不卡| 亚洲另类视频| 国产精品久久久久久久免费观看| 亚洲午夜视频| 国产精品嫩模av在线| 99成人在线视频| 日韩成人精品一区二区三区 | 国产精选一区| 激情综合网址| 久久激情五月婷婷| 久久国产免费| 久久国产麻豆精品| 偷拍欧美精品| 久久av电影| 91精品一区国产高清在线gif| 一区二区三区四区在线观看国产日韩| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 国产精品亚洲四区在线观看| 日韩国产一区二区三区| 亚洲乱码一区| 999久久久免费精品国产| 欧美视频二区| 欧美女激情福利| 精品久久在线| 亚洲欧美久久| 98精品视频| 日本综合视频| 欧美综合另类| 国产精品22p| 一区二区高清| 欧洲一级精品| 国产精品**亚洲精品| 亚洲欧美日韩国产| 涩涩av在线| 日韩超碰人人爽人人做人人添| 国产精品久久久久av电视剧| 国产精品成人3p一区二区三区| 欧美日韩午夜| 欧美亚洲国产精品久久| 蜜臀久久99精品久久久久宅男| 精品国产乱码久久久| 久久亚洲欧洲| 黄色在线观看www| 日本亚州欧洲精品不卡| 丝袜av一区| 国产乱人伦精品一区| 九九久久婷婷| 久久免费福利| 亚洲青青久久| 久久久久久久久丰满| 婷婷激情久久| 综合一区av| 99国产精品久久久久久久成人热| 免费一二一二在线视频| **爰片久久毛片| 蜜臀久久久99精品久久久久久|