一、操作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.rowcount
print(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.rowcount
print(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 pymysql
conn=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)