PyMySQL

PyMySQL介绍:

PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。

Django中也可以使用PyMySQL连接MySQL数据库。

一、PyMySQL安装:

pip install pymysql  

二、PyMySQL连接数据库:

# 导入pymysql模块
import pymysql
# 连接database
conn = 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()

注:1.端口号不要加引号 port:3306

       2.字符编码'utf8',不要写成"utf-8"

三、PyMySQL链接数据库,实现登录验证

# pymysql导包
import pymysql
# 获取用户输入
username = input("请输入用户名:")
usersex = input('请输入性别:')
# 连接mysql数据库,用conn接收
conn=pymysql.connect(
    host='localhost',
    port=3306,
    database='myinfo',
    user='root',
    password='123456',
    charset='utf8'
)
# 获取连接后的操作光标
course=conn.cursor()
# 写SQL语句
sql= "select * from first where name=%s and sex=%s;"

# 执行SQL语句 让pymysql帮我们拼接SQL语句
ret=course.execute(sql,[username,usersex])
# 判断是否输入是否和数据库内一致
if ret:
    print('登录成功')
else:
    print('登录失败')
#关闭连接光标
course.close()
# 关闭数据库链接
conn.close()

四、PyMySQL实现数据库的增添数据

import pymysql
conn=pymysql.connect(
    host='localhost',
    port=3306,
    database='myinfo',
    user='root',
    password='123456',
    charset='utf8')

cursor=conn.cursor()
sql="insert into first(id,name,sex,class) values(4,%s,%s,1)"
# try一下,解决传入参数的时候少传,多传报错问题
# 同时设置数据回滚
try:
    cursor.execute(sql,['思密达'])
    # 对数据库有增删改操作时候必须要把命令commit提交
    conn.commit()
except Exception as e:
    print('出错啦',e)
    conn.rollback()
conn.close()
cursor.close()
添加数据时异常处理
import pymysql
conn=pymysql.connect(
    host='localhost',
    port=3306,
    database='myinfo',
    user='root',
    password='123456',
    charset='utf8')
cursor=conn.cursor()
sql2="insert into first(id,name,sex,class) values(%s,%s,%s,1)"
data=[('4','思密达',''),('5','么么哒',''),('6','达令','')]
try:
    # 批量添加用executemany
    cursor.executemany(sql2,data)
    conn.commit()
except Exception as e:
    print('出错啦',e)
    conn.rollback()
conn.close()
cursor.close()
批量添加

五、PyMySQL数据查询

import pymysql
conn=pymysql.connect(
    host="localhost",
    port=3306,
    database="myinfo",
    user='root',
    password='123456',
    charset='utf8'
)
# 指定返回的类型是字典
cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
sql='select * from first'
cursor.execute(sql)
# 获取下一条数据
ret=cursor.fetchone()
# 获取所有的数据
ret=cursor.fetchall()
# 获取查询具体多少条数据
ret=cursor.fetchmany(3)      #查询三条数据
# 获取第一条开始的所有数据 绝对定位
ret=cursor.scrool(1,mode='absolute')
# 相对定位:获取上一个查询数据位置的下下一个开始的所有数据
ret=cursor.scrool(1,mode='relative')
print(ret)
conn.commit()
conn.close()
cursor.close()

六、lastrowid 获取最后添加的id值

import pymysql
conn=pymysql.connect(
    host='localhost',
    port=3306,
    user='root',
    database='myinfo',
    charset='utf8',
    password='123456'
)
cursor=conn.cursor()
# 给class添加数据
sql1='insert into classkey(class) values(%s)'
# 添加first数据
sql2="insert into first(name,sex,class) values(%s,%s,%s)"
# 执行sql1
cursor.execute(sql1,'s6')
# 获取class最后一个添加数据的id
new_id=cursor.lastrowid
# 执行sql2 给first 添加数据
cursor.execute(sql2,['cool','',new_id])
conn.commit()
conn.close()
cursor.close()
lastrowid用法
原文地址:https://www.cnblogs.com/zzy-9318/p/8619546.html