快速學會Python操作MySQL數據庫:數據科學家必備

歡迎來到數據科學探索,數據科學家是目前最稀缺的工作崗位之一,成為一名數據科學家就意味著站在了互聯網崗位鄙視鏈的頂端。歡迎關注數據科學探索,這裡有大量關於數據分析、數據挖掘、機器學習、爬蟲、可視化以及量化等相關領域的知識,希望能幫助各位在大數據的應用浪潮中抓住屬於自己的機遇!

在數據科學中,我們經常要連接數據庫並且執行特定的操作,比如數據獲取、更新、刪除等。

一般來說我們可以直接登錄MySQL並且完成這些任務,但是很多情況下,我們不得不在腳本中完成這些任務,比如說我們需要獲取數據後在Python中執行更多的數據清洗、計算、建模等操作。

在Python中,pymysql是一個非常好的用於操作MySQL的庫,接下來我們就來看一下如何用它來連接數據庫。

參數說明

我們用pymysql.Connect()方法來連接MySQL,它支持的參數如下:

pymysql.Connect()參數說明

host(str): MySQL服務器地址

port(int): MySQL服務器端口號

user(str): 用戶名

passwd(str): 密碼

db(str): 數據庫名稱

charset(str): 連接編碼

連接之後,Connection()方法胡返回一個connection對象,它支持如下的一些方法:

cursor() 使用該連接創建並返回遊標

commit() 提交當前事務

rollback() 回滾當前事務

close() 關閉連接

cursor()方法返回當前連接的遊標,即一個cursor對象,cursor()對象支持如下方法:

execute(op) 執行一個數據庫的查詢命令

fetchone() 取得結果集的下一行

fetchmany(size) 獲取結果集的下幾行

fetchall() 獲取結果集中的所有行

rowcount() 返回數據條數或影響行數

close() 關閉遊標對象

接下來我們來看一些實戰的案例。

案例

下面是一系列操作MySQL的例子,從案例中學習總是最快的,大家先來看一下。

import pymysql
# 連接數據庫
connect = pymysql.Connect(
host='localhost',
port=3310,
user='woider',
passwd='3243',
db='python',
charset='utf8'
)
# 獲取遊標
cursor = connect.cursor()
# 插入數據
sql = "INSERT INTO trade (name, account, saving) VALUES ( '%s', '%s', %.2f )"
data = ('雷軍', '13512345678', 10000)
cursor.execute(sql % data)
connect.commit()
print('成功插入', cursor.rowcount, '條數據')
# 修改數據
sql = "UPDATE trade SET saving = %.2f WHERE account = '%s' "
data = (8888, '13512345678')
cursor.execute(sql % data)
connect.commit()
print('成功修改', cursor.rowcount, '條數據')
# 查詢數據
sql = "SELECT name,saving FROM trade WHERE account = '%s' "
data = ('13512345678',)
cursor.execute(sql % data)
for row in cursor.fetchall():
print("Name:%s\tSaving:%.2f" % row)
print('共查找出', cursor.rowcount, '條數據')
# 刪除數據
sql = "DELETE FROM trade WHERE account = '%s' LIMIT %d"
data = ('13512345678', 1)
cursor.execute(sql % data)
connect.commit()
print('成功刪除', cursor.rowcount, '條數據')
# 事務處理
sql_1 = "UPDATE trade SET saving = saving + 1000 WHERE account = '18012345678' "
sql_2 = "UPDATE trade SET expend = expend + 1000 WHERE account = '18012345678' "
sql_3 = "UPDATE trade SET income = income + 2000 WHERE account = '18012345678' "
try:
cursor.execute(sql_1) # 儲蓄增加1000
cursor.execute(sql_2) # 支出增加1000
cursor.execute(sql_3) # 收入增加2000
except Exception as e:
connect.rollback() # 事務回滾
print('事務處理失敗', e)
else:
connect.commit() # 事務提交
print('事務處理成功', cursor.rowcount)
# 關閉連接
cursor.close()
connect.close()

如果手頭暫時沒有合適的數據庫的,可以先關注、收藏,然後找時間練習一下。

相關推薦

推薦中...