一. 安裝第三方管理模塊
首先安裝第三方mysql管理模塊:pip install mysql-connector.如果安裝過程中出現
WARNING: You are using pip version 21.3; however, version 21.3.1 is available.
You should consider upgrading via the 'C:\Program Files\python3.9\python.exe -m pip install --upgrade pip' command.
說明pip的版本有新的了,可以升級一下,命令:python.exe -m pip install --upgrade pip
如果直接用官方的源安裝速度太慢的話可以使用清華或者阿里的源,更改方法如下:
a. 臨時使用鏡像源下載Python包:
以numpy為例:pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
其他鏡像源地址:
阿里雲:http://mirrors.aliyun.com/pypi/simple/
豆瓣:http://pypi.douban.com/simple/
b. 永久更改鏡像源:
在"C:\Users\用戶名"文件夾下,添加pip文件夾,文件夾內新建pip.ini文件,內容為:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
安裝完成后可以,在交互式界面直接import測試看一下,導入的模塊import mysql.connector 注意是點不是橫杠。
二. 創建數據庫連接
語法:connect(host,user,passwd,database,auth_plugin = "mysql_native_password")auth_plugin為mysql密碼加密認證方式,
如果認證方式報錯,出現如下提示:
mysql Authentication plugin ‘caching_sha2_password’ is not supported問題
是因為在MySQL 8.0以后,默認的密碼加密方式是caching_sha2_password而不是mysql_native_password。
解決方法:
1.登錄mysql數據庫 mysql -u root -p
2.更新身份認證方式 alter user root@localhost identified with mysql_native_password by '密碼';
3.查看修改結果:
use mysql;
select * from user\G;
4.修改后的加密方式:
engine = create_engine(
"mysql+mysqlconnector://username:password@host:port/database?auth_plugin=mysql_native_password"
)
數據庫連接成功后,可以打印輸出mysql.connector對象的地址!
三. 數據庫的操作
A.單條插入語句;
生成一個cursor對象:(mysql.connector對象).cursor();例如:
con=mysql.connector.connect(host="mysql地址",user="用戶名",passwd="密碼",database="數據庫名“,auth_plugin = "mysql_native_password")
my_cursor=con.cursor()
編寫sql語句
sql="insert into 表名(字段1,字段2...) values (%s,%s....)" 在一個表里添加數據,%s只是一個占位符
val=(具體數值1,具體數值2....)
執行sql語句
my_cursor.execute(sql,val)
提交
con.commit()
print(my_cursor.rowcount(插入記錄統計),"插入記錄成功!")
B.批量插入數據;
批量插入數據操作步驟:
獲取連接對象-->獲取cursor對象-->編寫sql語句-->使用列表賦值-->調用executemany()執行sql語句-->提交事務 例
# 獲取連接對象
con=mysql.connector.connect(host='localhost',user='root',passwd='123',database='test01',auth_plugin = "mysql_native_password")
# print(con)
# 獲取cursor對象
my_cursor=con.cursor()
#編寫sql語句
sql="insert into ss(name,classroom,yuwen,shuxue) values (%s,%s,%s,%s)"
# 使用列表賦值
vals=[
('趙大','10班',90,92),
('趙二','11班',87,89),
('趙三','10班',93,23),
('趙四','11班',80,90),
('趙五','11班',70,0),
]
#調用executemany()執行sql語句
my_cursor.executemany(sql,vals)
#提交事務
con.commit()
print(my_cursor.rowcount,"條記錄插入成功!")
C.更新和刪除數據的操作
更新刪除數據操作步驟:獲取連接對象-->獲取cursor對象-->編寫sql語句-->調用executemany()執行sql語句-->提交事務
# 獲取連接對象
con=mysql.connector.connect(host='localhost',user='root',passwd='123',database='test01',auth_plugin = "mysql_native_password")
# print(con)
# 獲取cursor對象
my_cursor=con.cursor()
#編寫sql語句
sql="update ss set name='劉飛' where num=13" 更新數據
sql='delete from ss where num=12' #刪除語句
#調用executemany()執行sql語句
my_cursor.execute(sql)
#提交事務
con.commit()
print(my_cursor.rowcount,"條記錄修改成功!")
D.查詢操作
查詢數據操作步驟:獲取連接對象-->獲取cursor對象-->編寫sql語句-->調用executemany()執行sql語句-->提交事務--執行fetchall方法獲取返回結果
結果為列表類型,遍歷列表數據 例題:
import mysql.connector
# 獲取連接對象
con=mysql.connector.connect(host='localhost',user='root',passwd='123',database='test01',auth_plugin = "mysql_native_password")
# print(con)
# 獲取cursor對象
my_cursor=con.cursor()
#編寫sql#編寫sql語句
sql='select * from ss where yuwen>70'
my_cursor.execute(sql)
my_re=my_cursor.fetchall()
print(type(my_re))
for i in my_re:
print(i)