菜鳥教程:Python3 MySQL 數據庫連接 – PyMySQL 驅動 | 菜鳥教程
學習教程(視頻):Python連接MySQL數據庫【趣學Python】_哔哩哔哩_bilibili
學習教程(文件):Python連接MySQL數據庫_Python全棧之巅-CSDN博客_python 連接mysql數據庫
連接數據庫前,請先確認以下事項:
import pymysql
DBHOST = 'localhost'
DBUSER = '用戶名'
DBPASS = '密碼'
DBNAME = '連接名稱'
try:
db = pymysql.connect(host=DBHOST,user=DBUSER, password=DBPASS, database=DBNAME)
print('數據庫連接成功!')
except pymysql.Error as e:
print('數據庫連接失敗'+str(e))
# 使用 cursor() 方法創建一個游標對象 cursor
cursor = db.cursor()
# 使用 execute() 方法執行 SQL 查詢
# cursor.execute("SELECT VERSION()")
# 創建表之前先檢查是否存在,如果存在則刪除
cursor.execute('DROP TABLE IF EXISTS Student')
# 編輯sql語句
#sqlQuery = "CREATE TABLE Student(Name CHAR(20) NOT NULL ,Email CHAR(20),Age int )"
sqlQuery = "CREATE TABLE Student(Name CHAR(20) NOT NULL ,Age CHAR(20),Major CHAR(20) ,Num CHAR(20))ENGINE=InnoDB " \
"DEFAULT CHARSET=gbk; "
cursor.execute(sqlQuery)
此處注意編碼格式:DEFAULT CHARSET=gbk 如果沒有這個語句,向數據庫中插入中文會報錯
參考教程:解決Python往MySQL插入中文時報錯的問題_aaa2549769750的博客-CSDN博客
# 編輯sql語句
sqlQuery=" INSERT INTO Student (Name, Age, Major, Num) VALUE (%s,%s,%s,%s) "
# 編輯准備插入的值
value=('小西','20級','移動軟件','123456')
# 執行sql語句
try:
cursor.execute(sqlQuery,value)
db.commit()
print('數據插入成功!')
except pymysql.Error as e:
print("數據插入失敗:"+str(e) )
db.rollback()
Python查詢Mysql使用 fetchone() 方法獲取單條數據, 使用fetchall() 方法獲取多條數據。
# 編輯sql語句
sqlQuery = "SELECT * FROM Student"
# 使用fetchall()方法接收全部的返回結果行
try:
cursor.execute(sqlQuery)
results=cursor.fetchall()
for row in results:
if row[0]=='小西':
name=row[0]
age=row[1]
major=row[2]
num=row[3]
print('Name:%s,age:%s,major:%s,num:%s'%(name,age,major,num))
except pymysql.Error as e:
print("數據查詢失敗:"+str(e))
#編輯sql語句
sqlQuery = "UPDATE Student SET Name= %s WHERE Name=%s"
#編輯更新的信息
value = ('John', 'updated name')
#提交修改
try:
cur.execute(sqlQuery, value)
db.commit()
print('數據更新成功!')
except pymysql.Error as e:
print("數據更新失敗:"+str(e))
# 發生錯誤時回滾
db.rollback()
#編輯sql語句
sqlQuery = "DELETE FROM Student where Name=%s"
#編輯更新的信息
value = ('John')
#提交修改
try:
cur.execute(sqlQuery, value)
db.commit()
print('Date Deleted Successfully')
except pymysql.Error as e:
print("數據刪除失敗:"+str(e))
# 發生錯誤時回滾
db.rollback()
#編輯sql語句
sqlQuery='DROP TABLE IF EXISTS Student'
#提交修改
cur.execute(sqlQuery)
print('表刪除成功!')
# 關閉數據庫連接
db.close()