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


 

猜你喜欢

转载自blog.csdn.net/qq_38575545/article/details/80224526