本站最推薦的套件是 mysql-connector-python 套件,其它都不建議使用。
安裝套件
請使用如下指令安裝 mysql-connector-python
pip install mysql-connector-python==8.4.0
import
首先要 import mysql.connector,然後簡寫成 msyql,如下所示。
import mysql.connector as mysql
連線
使用 mysql 產生 conn 連線物件,裏面有四個參數,分別是
host : 資料庫伺服器網址或 ip
user : 登入資料庫的帳號
password : 登入資料庫的密碼
database : 資料庫名稱
import mysql.connector as mysql conn = mysql.connect( host="ip", user="帳號", password="密碼", database="資料庫" )
產生命令物件
命令物件通常命名為 cursor ,為執行 SQL 語法的物件,由 conn.cursor 產生而來。
cursor = conn.cursor()
執行 SQL 指令
由 cursor.execute(SQL 指令),若是新增、刪除、修改,最後還需 cursor.commit() 才會開始執行
cursor.execute("insert into 資料表 (欄位1, 欄位2, ...) values (值1, 值2, ....)")
cursor.commit()
查尋取回值
如果是 select 查尋指令,則需使用 fetchall 將資料取回,取回的資料為二維 list
cursor.execute("select * from 資料表")
rs=cursor.fetchall()
for r in rs:
print(r)整
關閉連線
操作完資料庫,最後一定要關閉連線,否則會造成資料庫伺服器連線過多耗損記憶体。
conn.close()
完整代碼
完整代碼如下
import mysql.connector as mysql
conn=mysql.connect(host="ip",user="帳號", password="密碼", database="資料庫")
cursor=conn.cursor()
cursor.execute("select count(*) from 資料表")
rs=cursor.fetchall()
cursor.close()
for r in rs:
print(r)
傳統新增資料錄
在資料表中新增資料錄的 SQL 基本語法如下
insert into 資料表 (欄1, 欄2, ...) values (值1, 值2....)
SQL語法寫好後, 使用 cursor.execute() 執行, 最後記得要加 conn.commit()
conn=mysql.connect(host="遠端",user="帳號",password="密碼", database="資料庫")
cursor = conn.cursor()
cursor.execute("select * from 台灣股市 order by 日期")
rs=cursor.fetchall()
cursor.close()
conn.close()
conn=mysql.connect(host="localhost",user="帳號",password="密碼", database="資料庫")
cursor=conn.cursor()
for r in rs:
cmd = f"insert into 台灣股市 (日期, 開盤, 最高, 最低, 收盤) values ('{str(r[1]}', {r[2]}, {r[3]}, {r[4]}, {r[5]})";
cursor.execute(cmd)
conn.commit()
cursor.close()
conn.close()
快速新增資料方法一
將 values 值使用 “(v1, v2, v3, …..), (v5, v6, v7, …..), …… ,” 合成一串,最後記得將最後的 “,”刪除
cmd="insert into 台灣股市 (日期, 開盤, 最高, 最低, 收盤) values "
for r in rs:
cmd += f"({r[0]}, {r[1]}, {r[2]}, {r[3]}, {r[4]}), "
cmd=cmd[:-1] #去除最後的 ","
cursor.execute(cmd)
conn.commit()
cursor.close()
conn.close()
快速新增資料方法二
準備好二維 List,然後在 cmd 使用 %s ,且不用單引號 ”
data=[] cmd = insert into 台灣股市 (日期, 開盤, 最高, 最低, 收盤) values (%s, %s, %s, %s, %s)" for r in rs: t=[str(r[1]), r[2], r[3], r[4], r[5]] data.append(t) cursor.executemany(cmd, data) conn.commit() cursor.close() conn.close()
取得欄位名稱
由cursor.description可以取得各個欄位的資料,再由欄位資料的第一個元素即為欄位名稱
cursor.execute("select * from 台灣股市")
columns=[d[0] for d in cursor.description]
