技術 如何用Python自動運算元據庫?

2021-10-10 17:40:23 字數 3385 閱讀 4469

↑↑↑關注後"星標"簡說python
人人都可以簡單入門python、爬蟲、資料分析
one old watch, like brief python

我在使用 python 之前,做資料分析工作的流程,一般是先開啟資料庫客戶端,然後執行一段寫好的 sql 語句,把資料查詢出來,然後再把資料複製到 excel 中並製作報表。

在使用 python 之後,這些工作都可以變成自動化,從而讓我有更多的時間,去思考和解決業務相關的問題,而不是陷入重複使用工具的手動操作。

吳軍在《數學之美》中說:

技術其實分為術和道兩種,具體的做事方法是術,做事的原理和原則是道。

很多具體的技術,很快就會落伍,所以只追求術的人,一輩子會很辛苦,還容易被淘汰。只有理解了事物的本質和精髓,才能做到游刃有餘。要想真正做好一件事,其實離不開長期的刻意練習。

我寫的很多文章,在介紹「術」的同時,也希望能夠傳達「道」的理念,也就是把工具和思維相結合。

今天介紹的技術,是用 python 自動運算元據庫的方法。

1. 安裝和匯入模組

以 python 中的 sqlalchemy 模組為例,配合使用其他第三方模組,sqlalchemy 能夠操作各種資料庫,包括 oracle、postgresql、mysql、sqlite、sql server 等等,如果你還沒有安裝,可以通過以下命令進行安裝:

pip install sqlalchemy
要測試 sqlalchemy 模組是否正確安裝,可以在 jupyter lab 中執行以下**:

# 導入庫import sqlalchemy as sa

# 檢視 sqlalchemy 版本sa.__version__

如果該模組正確安裝,就會輸出版本號,我目前使用的版本是 1.3.20。

不同的資料庫,需要安裝不同的第三方模組,比如說,要操作 oracle,那麼通常需要先安裝 cx_oracle:

pip install cx_oracle
2. 連線資料庫

在開始運算元據庫之前,需要先建立乙個資料庫引擎,然後再連線資料庫:

from sqlalchemy import create_engine

# 建立資料庫引擎engine = create_engine('oracle://user:password@ip_address:1521/orcl')

# 連線資料庫con = engine.connect()

其中使用者名稱、密碼和 ip 位址等基本資訊,要根據自己的實際情況進行修改。

3. 建立表

為了演示用 python 自動運算元據庫,假設你的資料庫賬號擁有建立表的許可權,那麼就可以執行下面的語句,實現建立乙個新的表:

# 執行建立表的 sql 語句sql = 'create table usr(id integer, name varchar2(50))'con.execute(sql)
4. 增刪改查

資料庫的常用操作包括增、刪、改、查,下面分別簡單演示一下。

首先,增加兩行模擬用的資料:

# 增con.execute("insert into usr(id, name) values(1, 'jim')")con.execute("insert into usr(id, name) values(2, 'joe')")
其次,刪除其中一行:

# 刪con.execute('delete from usr where id = 1')
然後,修改另一行資料:

# 改con.execute("update usr set name = 'jack' where id = 2")
雖然 sqlalchemy 非常強大,但是如果能配合 pandas 一起使用,那麼就能雙劍合璧,從而更好地解決資料處理和分析的問題。

比如說,按條件查詢指定的資料:

# 查sql = 'select id, name from usr where id = :id'import pandas as pddf = pd.read_sql(sa.text(sql), engine, params=)

df

idname

jack

5. 資料備份和刪除表

有時候,我們還需要把資料備份到資料庫中,如果直接使用 pandas 的 to_sql 函式,那麼字串型別的列會被自動儲存為 clob,這樣後續處理起來就會比較麻煩。

我們可以用乙個函式,實現自動轉換為 nvarchar 型別:

from sqlalchemy.types import nvarchar, float, integer
這個功能還可以應用於不同資料庫之間的資料遷移。比如說,從乙個 mysql 資料庫中查詢指定的資料,儲存為 df,然後再附加到 oracle 資料庫中。

如果設定好相應的定時任務,就能實現用 python 自動運算元據庫,從而自動完成相關工作。

最後,我們刪除上面演示用的兩個表,並關閉資料庫連線,節約資源,減少浪費,這是乙個很好的習慣。

# 刪除表con.execute('drop table usr')con.execute('drop table usr_backup')

# 關閉資料庫連線con.close()

小結

本文介紹了用 python 自動運算元據庫的一些常用方法,從 sqlalchemy 和 cx_oracle 模組的安裝和匯入,到連線資料庫,再到建立表和增刪改查,最後對資料進行備份和刪除表,這些操作都可以在 jupyter lab 中一鍵執行,自動完成一些資料庫的相關操作。

事實上,你可以根據自己的實際情況,修改資料庫的型別和字串連線等資訊,並執行各種各樣的 sql 語句,自動完成更加複雜的資料庫操作。

隨著機器變得越來越智慧型,許多任務作都變得越來越自動化,導致很多人擔心被機器搶了飯碗,憂慮遭遇中年危機,這也是人之常情,但我們要學會積極應對。

雖然資料分析的工具變化得很快,但資料分析的思維基本不變,而且方法總比困難多。如果我們把新的技術工具,與資料分析的思維相結合,應用於實際工作中,洞察事物的本質,那麼就能更好地完成自己的工作,從而創造更大的價值。

簡說python
長按掃碼關注,一起學python

學習更多:

如何用 Python 做自動化測試

python 3 環境的部署搭建 selenium 的定位元素操作 對頁面元素的 8 中定位操作 自動化測試框架的設計架構 對框架的構建有屬於自己的思路 docker for jenkins 整合自動化測試 讓測試用例自己執行 本場 chat 可以讓喜歡自動化測試的讀者從入門到掌握企業自動化測試框架...

如何用Python指令碼自動建立多張表

今天有個任務,將伺服器上mysql中的100張表一億條資料資料遷移到es中,因為mysql和es都是在生產環境中的,不敢亂動啊,萬一搞錯了就完蛋了,我只能在本地測試,第乙個要解決的問題就是,模擬出mysql的具有相同表結構的100張表 好在表的名字是有規律的 xx 1 xx 2 xx 3 xx 10...

如何用Python計算Softmax?

softmax函式,或稱歸一化指數函式,它能將乙個含任意實數的k維向量z 壓縮 到另乙個k維實向量 sigma 中,使得每乙個元素的範圍都在 0,1 之間,並且所有元素的和為1。該函式的形式通常按下面的式子給出 sigma frac e quad for j 1,k 輸入向量 1,2,3,4,1,2...