PyMySQL模塊的使用
阿新 • • 發佈:2018-03-21
數據庫地址 cut 關閉數據庫 地址 mysql模塊 utf8 基本 exce fetch
PyMySQL介紹
PyMySQL是在Python3.x版本中用於連接MySQL服務器的一個庫,Python2系列中則使用mysqldb。Django中也可以使用PyMySQL連接MySQL數據庫。
PyMySQL安裝
在CMD終端中安裝:
pip install pymysql
也可以在PyCharm裏安裝。
連接數據庫
註意事項:
- 有一個MySQL數據庫,並且已經啟動;
- 擁有可以連接數據庫的用戶名和密碼;
- 有一個有權限操作的database
基本使用:
# 導入pymysql模塊 import pymysql # 連接databaseconn = pymysql.connect( host=“你的數據庫地址”,
port=端口號 user=“用戶名”, password=“密碼”, database=“數據庫名”, charset=“utf8”) # 得到一個可以執行SQL語句的光標對象 cursor = conn.cursor() # 定義要執行的SQL語句 sql = """ CREATE TABLE USER1 ( id INT auto_increment PRIMARY KEY , name CHAR(10) NOT NULL UNIQUE, age TINYINT NOT NULL )ENGINE=innodb DEFAULT CHARSET=utf8;""" # 執行SQL語句 cursor.execute(sql) # 關閉光標對象 cursor.close() # 關閉數據庫連接 conn.close()
返回字典格式數據:
# 導入pymysql模塊 import pymysql # 連接database conn = pymysql.connect( host=“你的數據庫地址”,
port=端口號 user=“用戶名”, password=“密碼”, database=“數據庫名”, charset=“utf8”) # 得到一個可以執行SQL語句並且將結果作為字典返回的遊標 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 定義要執行的SQL語句 sql = """ CREATE TABLE USER1 ( id INT auto_increment PRIMARY KEY , name CHAR(10) NOT NULL UNIQUE, age TINYINT NOT NULL )ENGINE=innodb DEFAULT CHARSET=utf8; """ # 執行SQL語句 cursor.execute(sql) # 關閉光標對象 cursor.close() # 關閉數據庫連接 conn.close()
註意事項:一定要註意連接 database 的時候,書寫格式,比如端口號是數字型的,密碼是字符串型的,charset="utf8" 不是“utf-8”。
增刪改查操作
增
# 導入pymysql模塊 import pymysql # 連接database conn = pymysql.connect( host=“你的數據庫地址”, port=端口號 user=“用戶名”, password=“密碼”, database=“數據庫名”, charset=“utf8”) # 得到一個可以執行SQL語句的光標對象 cursor = conn.cursor() sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);" username = "Alex" age = 18 # 執行SQL語句 cursor.execute(sql, [username, age]) # 提交事務 conn.commit() cursor.close() conn.close()
插入數據失敗回滾
# 導入pymysql模塊 import pymysql # 連接database conn = pymysql.connect( host=“你的數據庫地址”, port=端口號 user=“用戶名”, password=“密碼”, database=“數據庫名”, charset=“utf8”) # 得到一個可以執行SQL語句的光標對象 cursor = conn.cursor() sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);" username = "Alex" age = 18 try: # 執行SQL語句 cursor.execute(sql, [username, age]) # 提交事務 conn.commit() except Exception as e: # 有異常,回滾事務 conn.rollback() cursor.close() conn.close()
獲取插入數據的ID(關聯操作時會用到)
# 導入pymysql模塊 import pymysql # 連接database conn = pymysql.connect( host=“你的數據庫地址”, port=端口號 user=“用戶名”, password=“密碼”, database=“數據庫名”, charset=“utf8”) # 得到一個可以執行SQL語句的光標對象 cursor = conn.cursor() sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);" username = "Alex" age = 18 try: # 執行SQL語句 cursor.execute(sql, [username, age]) # 提交事務 conn.commit() # 提交之後,獲取剛插入的數據的ID last_id = cursor.lastrowid except Exception as e: # 有異常,回滾事務 conn.rollback() cursor.close() conn.close()
批量執行
# 導入pymysql模塊 import pymysql # 連接database conn = pymysql.connect( host=“你的數據庫地址”, port=端口號 user=“用戶名”, password=“密碼”, database=“數據庫名”, charset=“utf8”) # 得到一個可以執行SQL語句的光標對象 cursor = conn.cursor() sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);" data = [("Alex", 18), ("Egon", 20), ("Yuan", 21)] try: # 批量執行多條插入SQL語句 cursor.executemany(sql, data) # 提交事務 conn.commit() except Exception as e: # 有異常,回滾事務 conn.rollback() cursor.close() conn.close()
刪
# 導入pymysql模塊 import pymysql # 連接database conn = pymysql.connect( host=“你的數據庫地址”, port=端口號 user=“用戶名”, password=“密碼”, database=“數據庫名”, charset=“utf8”) # 得到一個可以執行SQL語句的光標對象 cursor = conn.cursor() sql = "DELETE FROM USER1 WHERE id=%s;" try: cursor.execute(sql, [4]) # 提交事務 conn.commit() except Exception as e: # 有異常,回滾事務 conn.rollback() cursor.close() conn.close()
改
# 導入pymysql模塊 import pymysql # 連接database conn = pymysql.connect( host=“你的數據庫地址”, port=端口號 user=“用戶名”, password=“密碼”, database=“數據庫名”, charset=“utf8”) # 得到一個可以執行SQL語句的光標對象 cursor = conn.cursor() # 修改數據的SQL語句 sql = "UPDATE USER1 SET age=%s WHERE name=%s;" username = "Alex" age = 80 try: # 執行SQL語句 cursor.execute(sql, [age, username]) # 提交事務 conn.commit() except Exception as e: # 有異常,回滾事務 conn.rollback() cursor.close() conn.close()
查
查詢單條數據
# 導入pymysql模塊 import pymysql # 連接database conn = pymysql.connect( host=“你的數據庫地址”, port=端口號 user=“用戶名”, password=“密碼”, database=“數據庫名”, charset=“utf8”) # 得到一個可以執行SQL語句的光標對象 cursor = conn.cursor() # 查詢數據的SQL語句 sql = "SELECT id,name,age from USER1 WHERE id=1;" # 執行SQL語句 cursor.execute(sql) # 獲取單條查詢數據 ret = cursor.fetchone() cursor.close() conn.close() # 打印下查詢結果 print(ret)
查詢多條數據
# 導入pymysql模塊 import pymysql # 連接database conn = pymysql.connect( host=“你的數據庫地址”, port=端口號 user=“用戶名”, password=“密碼”, database=“數據庫名”, charset=“utf8”) # 得到一個可以執行SQL語句的光標對象 cursor = conn.cursor() # 查詢數據的SQL語句 sql = "SELECT id,name,age from USER1;" # 執行SQL語句 cursor.execute(sql) # 獲取多條查詢數據 ret = cursor.fetchall() cursor.close() conn.close() # 打印下查詢結果 print(ret)
進階用法
# 可以獲取指定數量的數據 cursor.fetchmany(3) # 光標按絕對位置移動1 cursor.scroll(1, mode="absolute") # 光標按照相對位置(當前位置)移動1 cursor.scroll(1, mode="relative")
PyMySQL模塊的使用