Python連接MySQL數據庫

       儘管很多 NoSQL 數據庫近幾年大放異彩,但是像 MySQL 這樣的關係型數據庫依然是互聯網的主流數據庫之一,每個學 Python 的都有必要學好一門數據庫,不管你是做數據分析,還是網絡爬蟲,Web 開發、亦或是機器學習,你都離不開要和數據庫打交道,而 MySQL 又是最流行的一種數據庫,這篇文章介紹 Python 操作 MySQL 的幾種方式。

一、通過pymysql進行連接

        數據庫的訪問無非是"建立數據庫連接–>>執行操作–>>關閉連接"這樣的過程,用pymysql也是如此。

1、建立連接
import pymsql
conn = pymysql.connect(host="47.92.118.81",port=3306,user="tblauopr",passwd="tblauopr",db="tableau",charset="utf8")

其中: host是主機名或者IP地址;port是端口號,一般爲3306,user爲用戶名,passwd爲連接密碼, db爲該連接下的數據庫,charset爲字符編碼。 這些字段都可以在MySQL的連接信息中找到,如下圖:
在這裏插入圖片描述

2、對數據庫進行操作
2.1、數據查詢語言DQL

       數據查詢語言DQL基本結構是由SELECT子句,FROM子句,WHERE子句組成的查詢塊,只需先通過 cur = conn.cursor() 獲取操作遊標,再通過 .execute() 來執行需要完成的SQL語句即可。

# 獲取操作遊標
cur = conn.cursor()
sql = "select * from tbl_orders limit 10"
#執行語句
cur.execute(sql)
# 通過fetchall獲取數據
data = cur.fetchall()
# 關閉遊標
cur.close()
# 關閉連接
conn.close()

注意:(1)、執行sql語句後需通過.fetchall()返回,且返回的是 元組 形式的數據(如下圖),而不是數據框;
            (2)、對數據庫操作完畢之後需關閉遊標與鏈接。
在這裏插入圖片描述

2.2、數據操縱語言DML與數據定義語言DDL

數據操縱語言DML主要有三種形式:
(1) 插入:INSERT、(2) 更新:UPDATE、(3) 刪除:DELETE
數據定義語言DDL用來創建數據庫中的各種對象:表、視圖、索引、同義詞、聚簇等如:CREATE TABLE/VIEW/INDEX/SYN/CLUSTER
       進行此類操作時,步驟與DQL相同,但是多了一個 提交 的步驟: .commit() ,只有在提交之後才能被執行。

cur = conn.cursor()
sql = " create table test select * from tbl_orders "
cur.execute(sql)
# 提交
conn.commit()
cur.close()
conn.close()

二、通過sqlalchemy連接數據庫

1、連接數據庫
from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://tblauopr:[email protected]:3306/tableau?charset=utf8')

       通過create_engine創建一個mysql連接器,其格式爲:mysql+pymysql://用戶名:數據庫密碼@IP地址:端口號/數據庫名稱?charset=編碼

2、對數據庫進行操作

       創建好mysql連接器後,就可以利用pandas中的函數對數據庫進行操作了,注意添加參數 con = engine

  • pd.read_sql_query
import pandas as pd
## 使用read_sql_query查看數據庫中的數據表數目
formlist = pd.read_sql_query('show tables', con = engine)

## 取數操作,返回一個數據框
get_data_sql = "select * from tbl_orders"
data = pd.read_sql_query(get_data_sql, con = engine)
  • pd.read_sql_table
##使用read_sql_table讀取訂單詳情表,通過表名返回整個表
usarrest = pd.read_sql_table('tbl_orders', con = engine)
  • pd.read_sql
#通過表名返回整個表
data = pd.read_sql('tbl_orders',con = engine)
#數據框取數
data = pd.read_sql('select * from tbl_orders', con = engine)
#查看數據庫中的數據表數目
formlist = pd.read_sql('show tables', con = engine)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章