今天要介紹的這個python第三方庫非常厲害,完美操作各種資料庫。名字叫 records, 在網上很少有這個庫的相關資料,但是在開源社群可是很火熱的哦。如果這還不能打消你的顧慮,再告訴你一件事:如果你用 python 程式設計,你一定聽過 requests, 這兩個庫是同乙個作者寫的。.records 包參考資料:records pypi 、 github
安裝
# 安裝 python-records
pip install records
使用步驟:
連線資料庫,返回 db 資料庫物件。
db 物件執行 sql 語句。
demo:
import records
# 獲取資料庫
#pool_recycle=true 解決:mysql server has gone away
db = records.database(
'mysql+pymysql://username:passwd@localhost:port/dbname'
)# 查詢
rows = db.query(
'select * from tablename'
)
獲取資料庫的格式是標準的 url 格式,如果使用的不是 mysql 資料庫,只需要換掉資料庫型別就可以了:
# 連線資料庫
db = records.database(
'mysql+pymysql://root:password@localhost:3306/dbname?charset=utf8'
)# 建立表
sql_create_table =
"""create table if not exists test4(
name varchar(20),
age int(11)
) default charset=utf8 ;"""
db.query(sql_create_table)
records 支援使用:variable
定義變數,通過引數傳入完成動態傳值,在需要動態載入資料的時候非常有用:
user =
db.query(
'insert into test4(name,age) values (:name, :age)'
,**user)
sql 語句在執行多條資料操作的時候非常不方便,尤其是當值還是變化的時候。 records 提供的 bulk_query 方法能快捷的插入和更新多條資料:
users =[,
,]db.bulk_query(
'insert into test4(name,age) values (:name, :age)'
, users)
查詢到資料以後,可以通過 all() 方法獲取所有的記錄,支援 3 種型別。
預設是自己封裝的recordcollection 物件
。
也可以通過as_dict=true
引數轉成字典形式。
可以通過as_ordereddict=true
轉成排序字典形式。
rows = db.query(
'select * from test4;'
)# 得到所有資料
print
(rows.
all())
# 字典形式展示
print
(rows.
all(as_dict=
true))
# 獲取第乙個
print
(rows.first())
# 以字典形式獲取第乙個
print
(rows.first(as_dict=
true))
# 排序字典
print
(rows.first(as_ordereddict=
true))
# 查詢唯一的乙個
print
(rows.one(
))
資料庫事務是經常需要使用到的資料庫操作,他通常是為了保持資料原子性和一致性。
比如乙個轉賬的資料庫操作:
從 webben 賬號中讀取餘額 ;
對 webben 賬號餘額減去轉賬 - 400;
從 weibin 賬號中把餘額讀出來;
對 weibin 賬號做加法操作(+400)。
我們必須保證這 4 步同時執行成功,要麼同時都不成功。如果前 2 步已經執行成功,但是到第 3 步發生了錯誤導致後面都不能執行,就會出現問題:webben的賬號被扣了錢,但是 weibin的賬號卻沒有加錢。
通過資料庫事務就能避免這種情況。
with db.transaction(
)as tx:
user =
tx.query(
'insert into test4(name,age) values (:name, :age)'
,**user)
# 下面是錯誤的 sql 語句,有錯誤,則上面的 sql 語句不會成功執行。
tx.query(
'webben'
)
資料庫資料得到以後還需要進一步的操作,比如儲存起來。
rows = db.query(
'select * from test4;'
)json_rows = rows.export(
'webben'
)print
(json_rows)
最常用的是如果需要各種各樣的報表,需要放到 excel 檔案中儲存起來。
rows = db.query(
'select * from test4;'
)with
open
('users.xlsx'
,'wb'
)as f:
f.write(rows.export(
'xlsx'
))
匯出的資料效果:
Python之運算元據庫
python中操作mysql資料需要安裝乙個第三方模組。安裝方式 在python中執行pip install pymysql 運算元據庫例項 import pymysql 開啟資料庫連線 host host 資料庫位址118.20.3.20 user user 資料庫名 password passw...
python運算元據庫
資料庫的操作在現在的python裡面已經變得十分的好用,有了一套api標準.下面的就是講講如何的去使用這套框架定義.此框架包含以下部分 connect parameters.其中的引數格式如下 dsn 資料來源名稱 user 使用者名稱 可選 password 密碼 可選 host 主機名 可選 d...
python 運算元據庫
目的 通過excel定義檢查指標項,然後通過python讀取指標,通過oracle sqlplus工具去執行獲取具體巡檢結果。unicode utf 8 coding utf 8 import os import sys import xlrd import paramiko reload sys ...