Python3 MySQL 數據庫連接 - PyMySQL 驅動
PyMySQL 安裝
PyMySQL 是在 Python3.x 版本中用於連接 MySQL 服務器的一個庫,Python2中則使用mysqldb。
在使用 PyMySQL 之前,我們需要確保 PyMySQL 已安裝。
PyMySQL 下載地址:https://github.com/PyMySQL/PyMySQL。
如果還未安裝,我們可以使用以下命令安裝最新版的 PyMySQL:
$ pip3 install PyMySQL
數據庫連接
import pymysql
connection=pymysql.connect(host="localhost",user="root",password="mysql") #打開數據庫連接
db_cursor=connection.cursor() #使用cursor()方法創建一個游標對象cursor
db_cursor.execute("select version()") #使用execute()方法執行sql查詢
data=db_cursor.fetchone() #使用fetchone()方法獲取單條數據
print("database version:%s" %data)
connection.close() #關閉數據庫連接
創建數據庫表及插入操作
import pymysql
connection=pymysql.connect(host="localhost",user="root",password="mysql") #打開數據庫連接
db_cursor=connection.cursor() #使用cursor()方法創建一個游標對象cursor
# 使用預處理語句創建表
sql="""CREATE TABLE contact(NAME VARCHAR(20),email VARCHAR(20),address VARCHAR(20),age INT)
"""
db_cursor.execute(sql)
# 關閉數據庫連接
connection.close()
插入操作
把csv文件里的數據插入到表contact
import pymysql,csv
connection=pymysql.connect(host="localhost",user="root",password="mysql") #打開數據庫連接
db_cursor=connection.cursor()
connection.select_db("test") #選擇要操作的數據庫
db_cursor.execute("delete from contact")
sql="""insert into contact(name,email,address,mobile) values('%s','%s','%s','%s')"""
try:
with open("test02.csv","r") as f: #將csv文件里的數據插入到表contact
result=csv.DictReader(f)
for i in result: #逐條執行插入
db_cursor.execute(sql %(i['name'],i['email'],i["address"],i['mobile']))
connection.commit()
except Exception as e:
print("error to insert data:",e)
connection.rollback() #若發生錯誤則回滾
print("insert rowcount:",db_cursor.rowcount) #返回影響行數
connection.close()
數據庫查詢操作
Python查詢Mysql使用 fetchone(),fetchall(),fetchmany(n)獲取數據
- fetchone(): 執行語句之后,獲得一條數據
- fetchall(): 執行語句之后,獲取所有數據.
- fetchmany(n):執行語句之后,獲得多條數據
import pymysql
connection=pymysql.connect(host="localhost",user="root",password="mysql") #打開數據庫連接
db_cursor=connection.cursor()
connection.select_db("test") #選擇要操作的數據庫
try:
db_cursor.execute("select * from contact") #執行sql
rs=db_cursor.fetchone() #獲取一行記錄
print(rs)
rs=db_cursor.fetchmany(2) #獲取余下記錄中的2行記錄
print(rs)
ars=db_cursor.fetchall() #獲取剩下的所有記錄
for rs in ars:
print(rs)
except Exception as e:
print("Error to select:",e)
connection.close()
數據庫表更新操作
import pymysql
connection=pymysql.connect(host="localhost",user="root",password="mysql") #打開數據庫連接
db_cursor=connection.cursor()
connection.select_db("test") #選擇要操作的數據庫
#數據庫更新操作
sql="""update contact set mobile=100088 where name='kate'
"""
try:
db_cursor.execute(sql) #執行sql
connection.commit() #提交到數據庫
db_cursor.execute("select * from contact")
ars=db_cursor.fetchall()
for rs in ars:
print(rs)
except Exception as e:
print("error to update:",e)
connection.rollback() #發生錯誤則回滾
connection.close()
數據庫表刪除操作
import pymysql
connection=pymysql.connect(host="localhost",user="root",password="mysql") #打開數據庫連接
db_cursor=connection.cursor()
connection.select_db("test") #選擇要操作的數據庫
sql="""delete from contact where name='jessic'
"""
try:
db_cursor.execute(sql)
connection.commit()
db_cursor.execute("select * from contact")
ars=db_cursor.fetchall()
for rs in ars:
print(rs)
except Exception as e:
print("error to delete:",e)
connection.rollback()
connection.close()
另一種python操作mysql的驅動 mysql-connector
mysql-connector 是 MySQL 官方提供的驅動器。
安裝mysql-connector
pip3 install mysql-connector
導入mysql-connector
import mysql.connector
其他操作與pymysql類似