成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

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

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

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

安裝

pip3 install pydbclib簡單使用

看下簡單的查詢示例

from pydbclib import connect# 使用with上下文,可以自動提交,自動關(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),向庫里寫入記錄也是字典形式,如果要使用原生元祖形式,查詢函數(shù)read里添加as_dict=False參數(shù)

接口文檔

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

# connect函數(shù)有個driver參數(shù)決定你是通過哪個數(shù)據(jù)庫驅(qū)動包去連接的# driver參數(shù)默認值是sqlalchemy,即通過sqlalchemy驅(qū)動包連接數(shù)據(jù)庫>>> db = pydbclib.connect('sqlite:///:memory:')>>> db = pydbclib.connect(':memory:', driver=’sqlite3’)# 也可以傳入驅(qū)動包連接對象>>> 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ù)庫連接包基本一致,不同點是它既可以單條執(zhí)行,也可以批量執(zhí)行(相當于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對每條記錄進行數(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對象, 前提已經(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()表級別操作的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條件表達式,其他接口的條件參數(shù)類似都可以是表達式>>> db.get_table('foo').find_one('a=1'){’a’: 1, ’b’: ’one’}# 查詢字段a=1所有記錄,find返回迭代器對象同上面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ù)庫連接

1. Common Driver

# 使用普通數(shù)據(jù)庫驅(qū)動連接,driver參數(shù)指定驅(qū)動包名稱# 例如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')# 通過odbc方式連接db = pydbclib.connect(’DSN=mysqldb;UID=user;PWD=password’, driver='pyodbc') # 通過已有驅(qū)動連接方式連接import pymysqlcon = pymysql.connect(user='user', password='password', database='test')db = pydbclib.connect(driver=con)

2. Sqlalchemy Driver

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

使用過程中有任何疑問,歡迎評論交流項目地址pydbclib

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

標簽: Python 編程
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美大肚乱孕交hd孕妇| 久久丁香综合五月国产三级网站| 亚洲久草在线视频| 欧美激情一区| 精品日韩欧美在线| 精品在线视频一区| 欧洲一区在线观看| 日韩精品视频网| 免费欧美日韩| 中文欧美日韩| 日本网站在线观看一区二区三区| 久久精品一区二区三区四区| 亚洲精品乱码久久久久久蜜桃麻豆| 蜜桃一区二区三区在线观看| 欧美国产一区视频在线观看| 欧美综合天天夜夜久久| 欧美日韩精品久久| 国产尤物一区二区在线| 亚洲已满18点击进入久久| 久久久亚洲精品石原莉奈| 国产a区久久久| 五月婷婷综合网| 日韩美女精品在线| 国产清纯美女被跳蛋高潮一区二区久久w | 色妹子一区二区| 午夜不卡av免费| 中文字幕乱码亚洲精品一区| 成人av网站在线观看免费| 老司机免费视频久久| 2021中文字幕一区亚洲| 丝袜亚洲精品中文字幕一区| 亚洲成色最大综合在线| 激情五月婷婷综合| 日韩一区中文字幕| 亚洲精品视频在线观看免费| 欧美视频在线播放| 国产原创一区二区三区| 一本久久综合亚洲鲁鲁五月天 | 一本色道88久久加勒比精品| 欧美日韩三级一区| 亚洲午夜日本在线观看| 国模冰冰炮一区二区| 欧美国产国产综合| 亚洲精品一区在线观看| 中文字幕免费一区| 国产视频在线观看一区 | 成人va在线观看| 久久精品国产色蜜蜜麻豆| 久久99精品久久久久久久久久久久| av电影在线观看完整版一区二区| 91搞黄在线观看| 免费观看在线综合| 在线精品视频一区二区| 国产精品一区二区视频| 日韩精品一区二| 91网上在线视频| 国产欧美日韩在线观看| 亚洲成色最大综合在线| 亚洲男女毛片无遮挡| 羞羞答答国产精品www一本| 天天色 色综合| 欧美亚洲一区二区在线| 久久精品久久综合| 91在线云播放| 亚洲欧洲国产日本综合| 国产欧美日韩综合一区在线播放 | 欧美sm极限捆绑bd| 国产在线欧美| 亚洲午夜电影在线观看| 欧美肥大bbwbbw高潮| 欧美成人一区二免费视频软件| 一区二区三区在线免费观看| 欧美色老头old∨ideo| 99国产精品一区| 夜夜嗨av一区二区三区四季av| 欧美精品vⅰdeose4hd| 欧美在线播放一区| 亚洲影院免费观看| 日韩女优视频免费观看| 亚洲国产黄色| 久久成人免费电影| 中文字幕 久热精品 视频在线| 老司机精品视频网站| av电影在线不卡| 天堂蜜桃一区二区三区| 久久婷婷国产综合国色天香| 免费久久99精品国产自| 成人av动漫网站| 亚洲成av人片一区二区| 91精品国产一区二区三区香蕉| 亚洲一级黄色| 麻豆国产一区二区| 国产欧美日韩久久| 欧美在线观看视频在线| 欧美视频二区| 国产一级精品在线| 一区二区高清免费观看影视大全 | thepron国产精品| 亚洲午夜激情网站| 欧美xfplay| 久久综合伊人| 欧美成人嫩草网站| 久久国产精品无码网站| 国产精品国产自产拍高清av| 欧美日韩午夜在线| 日韩视频一区| 成人黄动漫网站免费app| 亚洲国产精品一区二区久久恐怖片 | 欧美人动与zoxxxx乱| 亚洲激情婷婷| 成人高清免费观看| 视频一区二区欧美| 国产精品乱人伦中文| 91精品国产欧美一区二区18| 国产三区二区一区久久| 99国产精品久久久久| 日本不卡一二三| 国产精品夫妻自拍| 欧美不卡123| 欧美影院一区二区| 亚洲美女黄色| 99视频在线精品| 久久精品国产亚洲a| 亚洲精品福利视频网站| 26uuu国产日韩综合| 欧美最新大片在线看| 激情综合自拍| 东方欧美亚洲色图在线| 日韩—二三区免费观看av| 亚洲欧洲无码一区二区三区| 精品国产一区二区三区四区四| 在线亚洲一区二区| 亚洲综合精品| 91久久亚洲| 午夜欧美视频| 丁香另类激情小说| 精品一区二区久久久| 视频在线观看91| 亚洲欧美日韩国产手机在线 | 日韩视频国产视频| 91官网在线观看| 亚洲永久免费| 狠狠入ady亚洲精品| av影院午夜一区| 国产黄人亚洲片| 蜜桃av一区二区三区| 亚洲一区二区三区四区在线观看| 国产日韩欧美精品综合| 日韩欧美一区二区不卡| 亚洲一区网站| 最新国产乱人伦偷精品免费网站| heyzo一本久久综合| 国产伦理精品不卡| 日产国产欧美视频一区精品| 午夜欧美2019年伦理| 亚洲午夜三级在线| 一区二区三区.www| 依依成人精品视频| 亚洲国产精品传媒在线观看| 精品久久久久久久久久久久包黑料| 欧美年轻男男videosbes| 在线观看国产一区二区| 一本大道久久精品懂色aⅴ| 免费视频一区二区三区在线观看| 99av国产精品欲麻豆| 亚洲激情影院| 亚洲无线视频| 欧美三区在线| 国产精品mm| 国产一区观看| 亚洲国产三级| 国产精品日韩欧美一区| 国产日韩亚洲| 午夜影院日韩| 久久精品91| 色婷婷综合久久久中文字幕| 色综合久久久久综合体| 在线免费观看日韩欧美| 欧美在线免费播放| 欧美日韩国产高清一区二区三区 | 亚洲va天堂va国产va久| 亚洲成av人**亚洲成av**| 亚洲第一综合色| 天天色图综合网| 久久成人久久爱| 国产精品一区免费在线观看| 成人中文字幕在线| 91小视频在线免费看| 色综合久久综合网欧美综合网| av欧美精品.com| k8久久久一区二区三区| 91麻豆国产自产在线观看| 午夜久久一区| 99精品国产99久久久久久福利| 国产精品乱码一区二区三区| 噜噜噜噜噜久久久久久91| 欧美视频中文一区二区三区在线观看| 777奇米成人网| 久久久综合激的五月天| 国产精品污网站|