安裝第三方模塊pymysql
pip install pymysql
或者
通過PyCharm后臺操作
連接mysql
# 語法示例
import pymysql
db = pymysql.connect(host='localhost',user='root',password="123456",database='school',port=3306,charset="utf8")
數據操作的基本語法
import pymysql
# 打開數據庫連接
db = pymysql.connect(host="localhost", user="root", password="123456", database="school")
# 使用cursor()方法創建一個游標對象cursor
cursor = db.cursor()
# 撰寫SQL語句
sql = "select * from student"
# 執行SQL語句
cursor.execute(sql)
# 獲取數據
results = cursor.fetchall()
# 打印結果
print(results)
# 關閉數據庫連接
db.close()
游標的概念
游標的設計是一種數據緩沖區的思想,用來存放SQL語句執行的結果。游標是一種能從包括多條數據記錄的結果集中每次提取一條記錄的機制。
盡管游標能遍歷結果中的所有行,但一次只指向一行。
游標的作用就是用于對查詢數據庫所返回的記錄進行遍歷,以便進行相應的操作。
- 執行SQL代碼
- 遍歷獲取查詢結果
增
增加表
import pymysql
# 打開數據庫連接
db = pymysql.connect(host="localhost", user="root", password="123456", database="school")
# 使用cursor()方法創建一個游標對象cursor
cursor = db.cursor()
# 使用預處理語句創建表
sql = "create table ceshi (id int primary key, name char(8), age int)"
# 執行SQL語句
cursor.execute(sql)
# 關閉數據庫連接
db.close()
增加數據
import pymysql
# 打開數據庫連接
db = pymysql.connect(host="localhost", user="root", password="123456", database="school")
# 使用cursor()方法獲取操作游標
cursor = db.cursor()
# SQL插入語句
sql = "insert into ceshi values(1, 'Toiny', 25)"
try:cursor.execute(sql) # 執行SQL語句db.commit() # 提交到數據庫執行
except:db.rollback() # 如果發生錯誤則回滾
# 關閉數據庫連接
db.close()
知識點:
- 支持事務的儲存引擎,MySQL8.0默認是innodb。
- commit() 提交事務。
- 記錄的增刪改操作需要提交事務,其他不需要。
- rollbak() 回退事務,當事務執行到一半報錯時整個事務操作都會回退。
刪
import pymysql
# 打開數據庫連接
db = pymysql.connect(host="localhost", user="root", password="123456", database="school")
# 使用cursor()方法獲取操作游標
cursor = db.cursor()
# SQL刪除語句
sql = "delete from ceshi where age >= 20"
try:cursor.execute(sql) # 執行SQL語句db.commit() # 提交到數據庫執行
except:db.rollback() # 如果發生錯誤則回滾
# 關閉數據庫連接
db.close()
改
import pymysql
# 打開數據庫連接
db = pymysql.connect(host="localhost", user="root", password="123456", database="school")
# 使用cursor()方法獲取操作游標
cursor = db.cursor()
# SQL更新語句
sql = "update ceshi set age = 25 where age = 22"
sql1 = "select * from ceshi"
try:cursor.execute(sql) # 執行SQL語句cursor.execute(sql1) # 執行SQL語句db.commit() # 提交到數據庫執行
except:db.rollback() # 如果發生錯誤則回滾
# 打印數據
print(cursor.fetchall())
# 關閉數據庫連接
db.close()
查
import pymysql# 打開數據庫連接
db = pymysql.connect(host="localhost", user="root", password="123456", database="school")
# 使用cursor()方法創建一個游標對象cursor
cursor = db.cursor()
# SQL查詢語句
sql = "select * from student"
try:cursor.execute(sql) # 執行SQL語句# results = cursor.fetchone() # 逐條獲取數據results1 = cursor.fetchall() # 獲取全部數據for row in results1:name = row[3]sex = row[1]print("name=%s,sex=%s" % (name, sex))
except:print("Error: unable to fetch data")
# 關閉數據庫連接
db.close()
知識點:
- fetchone():該方法獲取下一個查詢結果集。結果集是一個對象。
- fetchall():接受全部的返回結果行。
- rowcount:這是一個只讀屬性,并返回執行execute()方法后影響的行數。
來自: 學習MySQL(六):Python的連接與操作