程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python MySQL - mysql-connector 驅動

編輯:Python

本篇文章使用 mysql-connector 來連接使用 MySQL, mysql-connector 是 MySQL 官方提供的驅動器。
我們可以使用 pip 命令來安裝 mysql-connector:

python -m pip install mysql-connector //cmd界面執行

使用以下代碼測試是否安裝成功

import mysql.connector //如果沒有報錯說明安裝成功

**注意:**如果你的MySQL是8.0版本,則需要修改加密規則,否則後面連接數據庫時會報錯,詳情請參照Navicat連接mysql報錯 1251錯誤

創建數據庫連接

# 導入模塊
import mysql.connector
# 創建數據庫連接
mydb = mysql.connector.connect(
host='localhost', #數據庫地址
user='root', #數據庫用戶名
passwd='your—passwd', #數據庫密碼
)

創建數據庫

創建數據庫使用create database語句,下面創建一個名為learning的數據庫

# 導入模塊
import mysql.connector
# 創建數據庫連接
mydb = mysql.connector.connect(
host='localhost', #數據庫地址
user='root', #數據庫用戶名
passwd='your—passwd', #數據庫密碼
)
my_cursor = mydb.cursor() #使用cursor方法獲取操作游標
my_cursor.execute("create database learning") #使用execute方法執行sql語句

查看所有數據庫

# 導入模塊
import mysql.connector
# 創建數據庫連接
mydb = mysql.connector.connect(
host='localhost', #數據庫地址
user='root', #數據庫用戶名
passwd='your—passwd', #數據庫密碼
)
my_cursor = mydb.cursor() #使用cursor方法獲取操作游標
my_cursor.execute("show databases") #使用execute方法執行sql語句
for i in my_cursor: #使用for循環打印每個數據庫
print(i)

現在有了數據庫,我們可以直接連接數據庫,只需在connect中配置一條語句

# 創建數據庫連接
mydb = mysql.connector.connect(
host='localhost', #數據庫地址
user='root', #數據庫用戶名
passwd='your—passwd', #數據庫密碼
database='learning', #配置數據庫名
)

創建數據表
創建數據表使用create table語句,創建數據表前,需要確保數據庫已存在,以下創建一個名為 users 的數據表:

# 導入模塊
import mysql.connector
# 創建數據庫連接
mydb = mysql.connector.connect(
host='localhost', #數據庫地址
user='root', #數據庫用戶名
passwd='your—passwd', #數據庫密碼
database='learning', #配置數據庫名
)
my_cursor = mydb.cursor() #使用cursor方法獲取操作游標
my_cursor.execute("create table users (name varchar(20), age int, male varchar(20) )") #使用execute方法執行sql語句

執行成功後可以看到數據庫中多了一張users表

創建表的時候我們一般都會設置一個主鍵(PRIMARY KEY),我們可以使用 “INT AUTO_INCREMENT PRIMARY KEY” 語句來創建一個主鍵,主鍵起始值為 1,逐步遞增。

如果我們的表已經創建,我們需要使用 ALTER TABLE 來給表添加主鍵:

# 導入模塊
import mysql.connector
# 創建數據庫連接
mydb = mysql.connector.connect(
host='localhost', #數據庫地址
user='root', #數據庫用戶名
passwd='your—passwd', #數據庫密碼
database='learning', #配置數據庫名
)
my_cursor = mydb.cursor() #使用cursor方法獲取操作游標
my_cursor.execute("ALTER TABLE users ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY") #使用execute方法執行sql語句

插入數據
插入數據使用 insert into語句:

# 導入模塊
import mysql.connector
# 創建數據庫連接
mydb = mysql.connector.connect(
host='localhost', #數據庫地址
user='root', #數據庫用戶名
passwd='your—passwd', #數據庫密碼
database='learning', #配置數據庫名
)
my_cursor = mydb.cursor() #使用cursor方法獲取操作游標
my_cursor.execute("insert into users(name, age, male) values('admin', '20', 'M')") #使用execute方法執行sql語句
mydb.commit() # 數據表內容有更新,必須使用到該語句
print(my_cursor.rowcount, "條記錄已更新") #rowcount方法返回sql語句執行後影響的行數

輸出結果為

1 條記錄已更新

如果我們想在數據記錄插入後,獲取該記錄的 ID ,可以使用以下代碼:

# 導入模塊
import mysql.connector
# 創建數據庫連接
mydb = mysql.connector.connect(
host='localhost', #數據庫地址
user='root', #數據庫用戶名
passwd='your—passwd', #數據庫密碼
database='learning', #配置數據庫名
)
my_cursor = mydb.cursor() #使用cursor方法獲取操作游標
my_cursor.execute("insert into users(name, age, male) values('admin', '20', 'M')") #使用execute方法執行sql語句
mydb.commit() # 數據表內容有更新,必須使用到該語句
print("1 條記錄已插入, ID:", my_cursor.lastrowid)

結果為

1 條記錄已插入, ID: 3

查詢數據
查詢數據使用 select 語句:

# 導入模塊
import mysql.connector
# 創建數據庫連接
mydb = mysql.connector.connect(
host='localhost', #數據庫地址
user='root', #數據庫用戶名
passwd='your—passwd', #數據庫密碼
database='learning', #配置數據庫名
)
my_cursor = mydb.cursor() #使用cursor方法獲取操作游標
my_cursor.execute("select * from users") #使用execute方法執行sql語句
result = my_cursor.fetchall() #fetchall()方法獲取全部數據
for i in my_cursor:
print(i)

刪除記錄

刪除記錄使用 delete from 語句:

# 導入模塊
import mysql.connector
# 創建數據庫連接
mydb = mysql.connector.connect(
host='localhost', #數據庫地址
user='root', #數據庫用戶名
passwd='your—passwd', #數據庫密碼
database='learning', #配置數據庫名
)
my_cursor = mydb.cursor() #使用cursor方法獲取操作游標
sql = "delete from users where id=1"
my_cursor.execute(sql) #使用execute方法執行sql語句
mydb.commit() # 數據表內容有更新,必須使用到該語句

為了防止數據庫查詢發生 SQL 注入的攻擊,我們可以使用 %s 占位符來轉義刪除語句的條件:

# 導入模塊
import mysql.connector
# 創建數據庫連接
mydb = mysql.connector.connect(
host='localhost', #數據庫地址
user='root', #數據庫用戶名
passwd='your—passwd', #數據庫密碼
database='learning', #配置數據庫名
)
my_cursor = mydb.cursor() #使用cursor方法獲取操作游標
sql = "delete from users where id=%s"
val = (2,)
my_cursor.execute(sql,val) #使用execute方法執行sql語句
mydb.commit()
print(my_cursor.rowcount, "條記錄已刪除")

更新表數據
數據表更新使用 update 語句

# 導入模塊
import mysql.connector
# 創建數據庫連接
mydb = mysql.connector.connect(
host='localhost', #數據庫地址
user='root', #數據庫用戶名
passwd='your—passwd', #數據庫密碼
database='learning', #配置數據庫名
)
my_cursor = mydb.cursor() #使用cursor方法獲取操作游標
sql = "update users set name='root' where name='admin' " #把admin的名字改為root
my_cursor.execute(sql) #使用execute方法執行sql語句
mydb.commit() # 數據表內容有更新,必須使用到該語句
print(my_cursor.rowcount, "條記錄已更新")

為了防止數據庫查詢發生 SQL 注入的攻擊,我們可以使用 %s 占位符來轉義更新語句的條件:

# 導入模塊
import mysql.connector
# 創建數據庫連接
mydb = mysql.connector.connect(
host='localhost', #數據庫地址
user='root', #數據庫用戶名
passwd='your—passwd', #數據庫密碼
database='learning', #配置數據庫名
)
my_cursor = mydb.cursor() #使用cursor方法獲取操作游標
sql = "update users set name=%s where name=%s " #把admin的名字改為root
val = ('root', 'admin')
my_cursor.execute(sql, val) #使用execute方法執行sql語句
mydb.commit() # 數據表內容有更新,必須使用到該語句
print(my_cursor.rowcount, "條記錄已更新")

刪除表
刪除表使用 drop table 語句

# 導入模塊
import mysql.connector
# 創建數據庫連接
mydb = mysql.connector.connect(
host='localhost', #數據庫地址
user='root', #數據庫用戶名
passwd='your—passwd', #數據庫密碼
database='learning', #配置數據庫名
)
my_cursor = mydb.cursor() #使用cursor方法獲取操作游標
sql = "drop table users"
my_cursor.execute(sql) #使用execute方法執行sql語句

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved