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