Python MySQL 連線與基本操作

最後更新於 2021 年 6 月 27 日

安裝MySQL Connector

在連結資料庫前首先要先安裝MySQL Connector

使用pip執行下方指令

python -m pip install mysql-connector

建立與MySQL的連接

將mysql.connector 引入,使用mysql.connector.connect(host="",user="",passwd="") 作連接。

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd=""
)
print(mydb)

創建資料庫

當我們連結資料庫後呼叫cursor()時便會建立一個cursor.MySQLCursor的物件,用於訪問和操作資料庫中的資料。接著使用 execute() 方法執行MySQL的命令,舉凡插入、查詢、刪除等都是要靠它。

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd=""
)
mycursor = mydb.cursor()
mycursor.execute("CREATE DATABASE testing")

連接指定資料庫

在 mydb 中加上 database = "資料庫名稱" 就可以連接指定資料庫。

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="",
  database="testing"
)
mycursor = mydb.cursor()

建立資料表

使用 CREATE TABLE tablename () 來建立資料表,詳細的SQL語法

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="",
  database="testing"
)
mycursor = mydb.cursor()
mycursor.execute("CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))")

新增資料

單筆資料

使用 INSERT INTO 來插入資料,execute方法執行SQL語法。

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="",
  database="testing"
)
mycursor = mydb.cursor()
sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = ("John", "Highway 21")
mycursor.execute(sql, val)
mydb.commit()

要注意的是,每次使用 新增、更新、刪除 的指令都需要使用 commit() 進行更改,否則不對資料表進行任何更動。

多筆資料

使用 executemany(sql, val) 來新增多筆資料。sql語法為 INSERT INTO customers (name,address) VALUES(%s,%s)val = [('',''),('',''),.....]

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="",
  database="testing"
)
mycursor = mydb.cursor()
sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = [
  ('Peter', 'Lowstreet 4'),
  ('Amy', 'Apple st 652'),
  ('Hannah', 'Mountain 21'),
  ('Michael', 'Valley 345'),
  ('Sandy', 'Ocean blvd 2'),
  ('Betty', 'Green Grass 1'),
  ('Richard', 'Sky st 331'),
  ('Susan', 'One way 98'),
  ('Vicky', 'Yellow Garden 2'),
  ('Ben', 'Park Lane 38'),
  ('William', 'Central st 954'),
  ('Chuck', 'Main Road 989'),
  ('Viola', 'Sideway 1633')
]
mycursor.executemany(sql, val)
mydb.commit()

從表中選擇

* 表示從資料表中選擇所有的欄位。

使用 fetchall() 方法是從資料表中提取所有資料。

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="",
  database="testing"
)
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM customers")
myresult = mycursor.fetchall()
for x in myresult:
  print(x)

若只要選擇表中的name和address欄位,可以將 SELECT * FROM customers 改為 SELECT name,address FROM customers

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="",
  database="testing"
)
mycursor = mydb.cursor()
mycursor.execute("SELECT name,address FROM customers")
myresult = mycursor.fetchall()
for x in myresult:
  print(x)

其他可以參考 W3School

0 0 評分數
Article Rating
訂閱
通知
guest

0 Comments
在線反饋
查看所有評論