一、操作mysql数据库常见第三方库
mysql-connector
pymysql
实现通过python操作mysql数据库
二、mysql-connector的基本应用
1、安装mysql-connector
2、mysql-connector的基本应用
mysql-connector操作mysql的步骤:
1、创建连接
2、创建游标实例
3、调用execute(参数1,参数2,参数3)处理数据库的操作
参数1:sql语句
参数2:类型为元组,元素值为sql语句占位符对应的参数 (若占位,则不加引号)
参数3:参数bool类型,第一个参数是不是多sql语句,如果是则传入True,否则传入False
import mysql.connector"""mysql.connector基本应用数据库:存储项目数据 验证数据‐‐‐》代码取数据库的数据来跟实际结果进行比对1、连接数据库2、创建游标实例3、调用游标实例的excute(sql) excute(sql,(values),bool) sql语句 数据库表常见操作"""# 1、连接数据库def connect():conn=mysql.connector.connect(host="localhost",user="root",password="admin")print(conn)return conn
3、连接某个数据库
"""连接指定某个数据库"""def connect_database(database):"""连接指定某个数据库:param database: 数据库名称:return:"""conn=mysql.connector.connect(host="localhost",user="root",password="admin",database=database)print(conn)return conn
4、创建数据库、创建表
def creatdatabase(databasename):conn=mysql.connector.connect(host="localhost",user="root",password="admin")# 获取游标实例cursor=conn.cursor()sql=f"create database {databasename}"cursor.execute(sql)cursor.execute("show databases")# 展示执行结果for database in cursor:print(database)"""创建表"""def createtable():conn = mysql.connector.connect(host="localhost",user="root",password="admin",database="mashang_211")# 获取游标实例cursor = conn.cursor()#创建表sql = "create table user(id int auto_increment primary key, name varchar(20), classname varchar(255))"cursor.execute(sql)
5、插入数据到表
"""插入数据到表"""def insertdata():conn = mysql.connector.connect(host="localhost",user="root",password="admin",database="mashang_211")# 获取游标实例cursor = conn.cursor()sql="insert into user(name,classname) values(%s,%s)"svalue=("jing","M211")cursor.execute(sql,svalue)#提交conn.commit()rowcount=cursor.rowcountprint(f"{rowcount}行记录插入成功!")cursor.execute("select * from user where name='zhangsan' ")#查看返回结果res=cursor.fetchall()print(res)print(type(res))
6、获取查询的结果数据
常用方法有:
fetchall() 获取所有的记录
fetchone() 获取第一行记录
fetchmany(size) 获取前几行记录
def select_showall(database,sql):"""查询数据,并返回查询结果:param database::param sql::return:"""conn=connect_database(database)# 获取游标实例cursor = conn.cursor()cursor.execute(sql)# 查看所有返回结果allrows = cursor.fetchall()# 返回第一条记录onerow=cursor.fetchone()# 返回多条记录manyrow=cursor.fetchmany(3)print(allrows)print(type(allrows))
7、批量插入数据
executemany()方法,实现批量插入多条数据
第二参数是一个元组列表,包含我们插入的数据
"""批量插入数据"""def insertmany(database):conn = connect_database(database)# 2获取游标实例cursor = conn.cursor()sql="insert into user(name,classname) values(%s,%s)"sqlvalues=[('huahua',"M211"),('DD',"M211"),("xiaoyang","M211")]cursor.executemany(sql,sqlvalues)# 提交conn.commit()rows=cursor.rowcountprint(f"{rows}行记录插入成功!")select_showall(database,"select * from user")
8、防sql注入,一般sql语句中用占位符传值
databse2="mashang"conn = connect_database(databse2)mycursor=conn.cursor()# 避免sql注入sql="select * from vipinfo where name=%s"sqlvals=("zhangsan",)data=mycursor.execute(sql,sqlvals)print(data)
三、PyMySQL
是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
我们可以使用命令安装最新版的 PyMySQL : pip install PyMySQL
实现的逻辑跟mysql-connector一致,及相同的操作,操作方法也一致
import pymysqlconn=pymysql.connect(host="localhost",user="root",password="admin",database="mashang")print(conn)# 获取流标实例mycursor=conn.cursor()mycursor.execute("select * from vipinfo")data=mycursor.fetchall()print(data)
