成人视屏在线观看-国产99精品-国产精品1区2区-欧美一级在线观看-国产一区二区日韩-色九九九

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

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

瀏覽:2日期: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í)行(相當(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對每條記錄進行數(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)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 国产不卡a| 国产精品视频免费 | 久久99精品久久久久久秒播 | 亚洲国产精品aaa一区 | 欧美成人精品一区二区 | 一区二区三区久久精品 | 日本免费在线 | 日韩在线视频免费不卡一区 | 国产成人精品视频 | 日本三级香港三级三级人!妇久 | 国产亚洲精品网站 | 久久久久久九九 | 欧美很黄视频在线观看 | 一本三道a无线码一区v小说 | 2021国产成人精品久久 | 国产成人在线视频播放 | 久久午夜国产片 | 国产一区二区三区四区五区 | 久草中文在线观看 | 一区二区三区亚洲 | 91久久精品一区二区三区 | 成年人毛片网站 | 中文字幕乱码无线码在线 | 国产精品综合一区二区 | 亚洲系列国产系列 | 日本一级毛片免费播放 | 91免费网站在线看入口黄 | 欧美一区二区二区 | 一区免费在线观看 | 午夜国产理论 | 日韩欧美一区二区精品久久 | 成人国产在线观看 | 女人扒开双腿让男人捅 | 久久成人免费观看草草影院 | 成人怡红院视频在线观看 | 亚欧视频在线 | 亚洲精品欧美 | 久久se精品一区精品二区 | a级毛片毛片免费很很综合 a级毛片免费 | 韩国精品视频在线观看 | 中文乱码字幕午夜无线观看 |