1. 程式人生 > >python3.6.4使用pymysql庫連線mysql

python3.6.4使用pymysql庫連線mysql

一開始看菜鳥教程講的是MySQLdb,後來發現這個庫只支援2.x不支援3.x,於是換了pymysql。

這裡用的資料庫是mysql5.7.20資料管理工具使用的Navicat Premium。

1.首先安裝pymysql庫

pip install pymysql


注:因為已經安過了,所以這裡提示Requirement already satisfied。

因為要用mysql,所以首先啟動mysql

首先進入管理員下的命令提示符(win+x->a)

net start mysql


注:關閉mysql: 

net stop mysql

在navicat上連線資料庫,並建立一個demo的資料庫以及一個叫db的表


2.測試增刪改查

host,port,user分別對應下圖。passwd=密碼,文中是123456;db=資料庫名字,文中是demo。


查詢

# 匯入 pymysql
import pymysql
# 開啟資料庫連線
db = pymysql.connect(host="localhost", user="root",passwd="123456", db="demo", port=3306)
# 使用cursor()方法獲取操作遊標
cur = db.cursor()
# 1.查詢操作
# 編寫sql 查詢語句,db是表名
sql = "select * from db"
try:
    cur.execute(sql)      # 執行sql語句
    res = cur.fetchall()  # 獲取查詢的所有記錄
    print("id", "name", "passwd")
    # 遍歷結果
    for row in res:
        id = row[0]
        name = row[1]
        passwd = row[2]
        print(id, name, passwd)
except Exception as e:
    raise e
finally:
    db.close()  # 關閉連線

注:

fetchall() :返回多個元組,即返回多個記錄(rows),如果沒有結果 則返回 ()

fetchone() :返回單個的元組,也就是一條記錄(row),如果沒有結果 則返回 None

在MySQL中是NULL,而在Python中則是None

例如:

sql = "select id,username,passwd from db"
try:
    cur.execute(sql)
    res = cur.fetchone()
    print("id", "name", "passwd")
    print(res[0],res[1],res[2])

fetchone() 

只取最上面的第一條結果

插入

import pymysql
db = pymysql.connect(host='localhost',user='root',passwd='123456',port=3306,db='demo')
cur=db.cursor()
sql_insert = """insert into db(id,username,passwd) values(4,'dada','233')"""
try:
    cur.execute(sql_insert)
    db.commit()
except Exception as e:
    db.rollback()#錯誤回滾
finally:
    db.close()

更新

import pymysql
db = pymysql.connect(host="localhost", user="root",passwd="123456", db="demo", port=3306)
cur = db.cursor()
sql_update = "update db set passwd = '%s' where id = %d" % ("555", 4)
try:
    cur.execute(sql_update)
    db.commit()
except Exception as e:
    db.rollback()
finally:
    db.close()

刪除

import pymysql
db = pymysql.connect(host='localhost',user='root',passwd='123456',port=3306,db='demo')
cur = db.cursor()
sql_delete = "delete from db where id = %d"%(4)
try:
    cur.execute(sql_delete)
    db.commit()
except Exception as e:
    db.rollback()
finally:
    db.close()