一、操作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

  1. import mysql.connector
  2. """
  3. mysql.connector基本应用
  4. 数据库:存储项目数据 验证数据‐‐‐》代码取数据库的数据来跟实际结果进行比对
  5. 1、连接数据库
  6. 2、创建游标实例
  7. 3、调用游标实例的excute(sql) excute(sql,(values),bool) sql语句 数据库表常见操作
  8. """
  9. # 1、连接数据库
  10. def connect():
  11. conn=mysql.connector.connect(
  12. host="localhost",
  13. user="root",
  14. password="admin"
  15. )
  16. print(conn)
  17. return conn

3、连接某个数据库

  1. """连接指定某个数据库"""
  2. def connect_database(database):
  3. """
  4. 连接指定某个数据库
  5. :param database: 数据库名称
  6. :return:
  7. """
  8. conn=mysql.connector.connect(
  9. host="localhost",
  10. user="root",
  11. password="admin",
  12. database=database
  13. )
  14. print(conn)
  15. return conn

4、创建数据库、创建表

  1. def creatdatabase(databasename):
  2. conn=mysql.connector.connect(
  3. host="localhost",
  4. user="root",
  5. password="admin"
  6. )
  7. # 获取游标实例
  8. cursor=conn.cursor()
  9. sql=f"create database {databasename}"
  10. cursor.execute(sql)
  11. cursor.execute("show databases")
  12. # 展示执行结果
  13. for database in cursor:
  14. print(database)
  15. """
  16. 创建表
  17. """
  18. def createtable():
  19. conn = mysql.connector.connect(
  20. host="localhost",
  21. user="root",
  22. password="admin",
  23. database="mashang_211"
  24. )
  25. # 获取游标实例
  26. cursor = conn.cursor()
  27. #创建表
  28. sql = "create table user(id int auto_increment primary key, name varchar(20), classname varchar(255))"
  29. cursor.execute(sql)

5、插入数据到表

  1. """插入数据到表"""
  2. def insertdata():
  3. conn = mysql.connector.connect(
  4. host="localhost",
  5. user="root",
  6. password="admin",
  7. database="mashang_211"
  8. )
  9. # 获取游标实例
  10. cursor = conn.cursor()
  11. sql="insert into user(name,classname) values(%s,%s)"
  12. svalue=("jing","M211")
  13. cursor.execute(sql,svalue)
  14. #提交
  15. conn.commit()
  16. rowcount=cursor.rowcount
  17. print(f"{rowcount}行记录插入成功!")
  18. cursor.execute("select * from user where name='zhangsan' ")
  19. #查看返回结果
  20. res=cursor.fetchall()
  21. print(res)
  22. print(type(res))

6、获取查询的结果数据

常用方法有:
fetchall() 获取所有的记录
fetchone() 获取第一行记录
fetchmany(size) 获取前几行记录

  1. def select_showall(database,sql):
  2. """
  3. 查询数据,并返回查询结果
  4. :param database:
  5. :param sql:
  6. :return:
  7. """
  8. conn=connect_database(database)
  9. # 获取游标实例
  10. cursor = conn.cursor()
  11. cursor.execute(sql)
  12. # 查看所有返回结果
  13. allrows = cursor.fetchall()
  14. # 返回第一条记录
  15. onerow=cursor.fetchone()
  16. # 返回多条记录
  17. manyrow=cursor.fetchmany(3)
  18. print(allrows)
  19. print(type(allrows))

7、批量插入数据

executemany()方法,实现批量插入多条数据
第二参数是一个元组列表,包含我们插入的数据

  1. """批量插入数据"""
  2. def insertmany(database):
  3. conn = connect_database(database)
  4. # 2获取游标实例
  5. cursor = conn.cursor()
  6. sql="insert into user(name,classname) values(%s,%s)"
  7. sqlvalues=[('huahua',"M211"),('DD',"M211"),("xiaoyang","M211")]
  8. cursor.executemany(sql,sqlvalues)
  9. # 提交
  10. conn.commit()
  11. rows=cursor.rowcount
  12. print(f"{rows}行记录插入成功!")
  13. select_showall(database,"select * from user")

8、防sql注入,一般sql语句中用占位符传值

  1. databse2="mashang"
  2. conn = connect_database(databse2)
  3. mycursor=conn.cursor()
  4. # 避免sql注入
  5. sql="select * from vipinfo where name=%s"
  6. sqlvals=("zhangsan",)
  7. data=mycursor.execute(sql,sqlvals)
  8. print(data)

三、PyMySQL

是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
我们可以使用命令安装最新版的 PyMySQL : pip install PyMySQL
实现的逻辑跟mysql-connector一致,及相同的操作,操作方法也一致

  1. import pymysql
  2. conn=pymysql.connect(host="localhost",user="root",password="admin",database="mashang")
  3. print(conn)
  4. # 获取流标实例
  5. mycursor=conn.cursor()
  6. mycursor.execute("select * from vipinfo")
  7. data=mycursor.fetchall()
  8. print(data)

作业

mysql安装步骤.txt