python 中連接 mysql 數據庫,可以使用 mysql-connector,mysql-connector 是 mysql 官方提供的驅動;是屬於第三方的模塊,所以需要手動安裝;
也可以使用 pymysql 驅動來連接 mysql 數據庫,pymysql 是 python3 版本中的,python2 中使用的是 mysqldb;pymysql 模塊也是第三方模塊,需要手動安裝;
兩種方法差不多,我是用 mysql-connector 模塊連接的;
1、創建 mysql 數據庫連接:
# 導入數據庫連接模塊
import mysql.connector
# 創建數據庫連接,返回一個連接對象
mydb = mysql.connector.connect(
host="localhost", # 數據庫地址
user="root", # 用戶名
passwd="root", # 密碼
database="students_db" # 數據庫名稱
)
print(mydb)
2、創建數據庫:
# 返回數據庫遊標,用於操作數據庫
mycursor = mydb.cursor()
# 執行 sql 語句創建數據庫
mycursor.execute("create database students_db")
如果數據庫已經存在,則會拋出異常:
3、查看所有已經存在的數據庫:
# 查看所有已經存在的數據庫
mycursor.execute("show databases")
for db in mycursor:
print(db)
輸出結果:
4、創建數據庫連接時,也可以直接指定要操作的數據庫:
# 導入數據庫連接模塊
import mysql.connector
# 創建數據庫連接,返回一個連接對象
mydb = mysql.connector.connect(
host="localhost", # 數據庫地址
user="root", # 用戶名
passwd="root", # 密碼
database="students_db" # 數據庫
)
print(mydb)
如果數據庫不存在,會拋出異常:
5、創建數據表:
# 返回數據庫遊標,用於操作數據庫
mycursor = mydb.cursor()
# 執行 sql 語句創建數據表
mycursor.execute("create table student (name varchar(20), age int)")
6、插入數據:
# 插入數據的 sql 語句,參數用佔位符 %s 表示
sql = "insert into student(name, age) values(%s, %s)"
# sql 語句中的參數,以元組的形式傳入
value = ("jack", "22")
# 執行 sql 語句插入數據
mycursor.execute(sql, value)
# 提交事物,事物是默認開啓的,修改表數據以後,必須要提交
mydb.commit()
# 返回受影響的行數
print(mycursor.rowcount)
7、批量插入數據:
# 插入數據的 sql 語句,參數用佔位符 %s 表示
sql = "insert into student(name, age) values(%s, %s)"
# sql 語句中的參數,批量傳參的時候,參數是一個元祖列表
value = [("jack", "22"), ("tom", "23"), ("lily", "24"), ("lucy", "25")]
# 執行 sql 語句插入數據
# mycursor.execute(sql, value)
# 批量插入數據的時候,使用 executemany 方法
mycursor.executemany(sql, value)
# 提交事物,事物是默認開啓的,修改表數據以後,必須要提交
mydb.commit()
# 返回受影響的行數
print(mycursor.rowcount)
8、查詢數據:
# 執行 sql 語句查詢數據
mycursor.execute("select * from student")
# 查詢數據的時候不需要提交事物
# mydb.commit()
# fetchall() 方法表示獲取遊標中的所有記錄
myresult = mycursor.fetchall()
for x in myresult:
print(x)
# fetchone() 表示只獲取一條數據
mycursor.fetchone()
# fetchmany() 表示獲取多條數據,參數是獲取的數量
mycursor.fetchmany(3)
輸出結果:
9、刪除數據:
# 準備 sql 語句,參數用佔位符 %s 表示
sql = "delete from student where name=%s"
value = ("jack", ) # 參數
# 執行 sql 語句刪除數據
mycursor.execute(sql, value)
# 修改表數據的時候必須要提交纔會生效
mydb.commit()
10、修改數據:
# 準備 sql 語句,參數用佔位符 %s 表示
sql = "update student set age = %s where name = %s"
value = ("18", "lucy") # 參數
# 執行 sql 語句修改數據
mycursor.execute(sql, value)
# 修改表數據的時候必須要提交纔會生效
mydb.commit()