Python學習筆記(三十一):連接 mysql 數據庫


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()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章