当前位置:   article > 正文

python操作mysql实现增删改查(包括单条新增,多条新增,批量新增等,全网最详细)_python连接数据库增删改查

python连接数据库增删改查

下载mysql与navicat(可参考这两个文章)

MySQL安装教程,windows下(超详细,根据步骤一步步来)-CSDN博客

navicat连接mysql(windows下)-CSDN博客

一.数据准备

1.选中服务器右键--新建数据库

sql运行指令,可查看资源,如有需要可在资源中自行下载(并且会详细注明字段的含义)

2.查看创建的class表

二.连接数据库

1.pycharm创建新项目

2.连接数据库(前提:安装pymysql模块,pip install pymysql)

  1. import pymysql
  2. #建立数据库连接
  3. conn=pymysql.connect(
  4. host='127.0.0.1', #主机名
  5. port=3306,#端口号
  6. user='root',#用户名
  7. password='123456',#密码
  8. db='testMysql',#数据库名
  9. charset='utf8'
  10. )
  11. #获取游标
  12. cursor=conn.cursor()
  13. #创建查询sql语句的函数
  14. def search_sql():
  15. #执行sql语句
  16. sql='select * from class'
  17. rows=cursor.execute(sql) #返回结果是受影响的行数
  18. print(rows) #数据库的class还没有数据,所以rows应该是0
  19. # 判断是否连接成功
  20. if rows >= 0:
  21. print('数据库连接成功')
  22. else:
  23. print('数据库连接失败')
  24. if __name__ == '__main__':
  25. search_sql()
  26. # 关闭游标
  27. cursor.close()
  28. # 关闭连接
  29. conn.close()

运行结果:

三.增加数据

1.单条

再原来的代码基础上,新增insert_sql()函数

  1. import pymysql
  2. #建立数据库连接
  3. conn=pymysql.connect(
  4. host='127.0.0.1', #主机名
  5. port=3306,#端口号
  6. user='root',#用户名
  7. password='123456',#密码
  8. db='testMysql',#数据库名
  9. charset='utf8'
  10. )
  11. #获取游标
  12. cursor=conn.cursor()
  13. #创建查询sql语句的函数
  14. def search_sql():
  15. #执行sql语句
  16. sql='select * from class'
  17. rows=cursor.execute(sql) #返回结果是受影响的行数
  18. print(rows) #数据库的class还没有数据,所以rows应该是0
  19. # 判断是否连接成功
  20. if rows >= 0:
  21. print('数据库连接成功')
  22. else:
  23. print('数据库连接失败')
  24. #创建新增sql语句的函数-单条数据
  25. def insert_sql():
  26. #执行sql
  27. sql='insert into class(cid,caption,grade_id) values(%s,%s,%s)'
  28. rows=cursor.execute(sql,('1','1年级','1'))
  29. #提交
  30. conn.commit()
  31. print(f'增加的行数{rows}')
  32. if __name__ == '__main__':
  33. #search_sql()
  34. insert_sql()
  35. # 关闭游标
  36. cursor.close()
  37. # 关闭连接
  38. conn.close()

运行结果:

查看数据库class表中的数据:

2.多条

再原来的代码基础上,新增inserts_sql()函数

  1. import pymysql
  2. #建立数据库连接
  3. conn=pymysql.connect(
  4. host='127.0.0.1', #主机名
  5. port=3306,#端口号
  6. user='root',#用户名
  7. password='123456',#密码
  8. db='testMysql',#数据库名
  9. charset='utf8'
  10. )
  11. #获取游标
  12. cursor=conn.cursor()
  13. #创建查询sql语句的函数
  14. def search_sql():
  15. #执行sql语句
  16. sql='select * from class'
  17. rows=cursor.execute(sql) #返回结果是受影响的行数
  18. print(rows) #数据库的class还没有数据,所以rows应该是0
  19. # 判断是否连接成功
  20. if rows >= 0:
  21. print('数据库连接成功')
  22. else:
  23. print('数据库连接失败')
  24. #创建新增sql语句的函数-单条数据
  25. def insert_sql():
  26. #执行sql
  27. sql='insert into class(cid,caption,grade_id) values(%s,%s,%s)'
  28. rows=cursor.execute(sql,('1','1年级','1'))
  29. #提交
  30. conn.commit()
  31. print(f'增加的行数{rows}')
  32. #创建新增sql语句的函数-多条数据
  33. def inserts_sql():
  34. #执行sql
  35. sql='insert into class(cid,caption,grade_id) values(%s,%s,%s)'
  36. rows=cursor.executemany(sql,[('2','2年级','2'),('3','3年级','3'),('4','4年级','4')])
  37. #提交
  38. conn.commit()
  39. print(f'增加的行数{rows}')
  40. if __name__ == '__main__':
  41. #search_sql()
  42. #insert_sql()
  43. inserts_sql()
  44. # 关闭游标
  45. cursor.close()
  46. # 关闭连接
  47. conn.close()

运行结果:

查看数据库class表中的数据:

3.批量新增

再原来的代码基础上,新增inserts_sql_many()函数

  1. import pymysql
  2. #建立数据库连接
  3. conn=pymysql.connect(
  4. host='127.0.0.1', #主机名
  5. port=3306,#端口号
  6. user='root',#用户名
  7. password='123456',#密码
  8. db='testMysql',#数据库名
  9. charset='utf8'
  10. )
  11. #获取游标
  12. cursor=conn.cursor()
  13. #创建查询sql语句的函数
  14. def search_sql():
  15. #执行sql语句
  16. sql='select * from class'
  17. rows=cursor.execute(sql) #返回结果是受影响的行数
  18. print(rows) #数据库的class还没有数据,所以rows应该是0
  19. # 判断是否连接成功
  20. if rows >= 0:
  21. print('数据库连接成功')
  22. else:
  23. print('数据库连接失败')
  24. #创建新增sql语句的函数-单条数据
  25. def insert_sql():
  26. #执行sql
  27. sql='insert into class(cid,caption,grade_id) values(%s,%s,%s)'
  28. rows=cursor.execute(sql,('1','1年级','1'))
  29. #提交
  30. conn.commit()
  31. print(f'增加的行数{rows}')
  32. #创建新增sql语句的函数-多条数据
  33. def inserts_sql():
  34. #执行sql
  35. sql='insert into class(cid,caption,grade_id) values(%s,%s,%s)'
  36. rows=cursor.executemany(sql,[('2','2年级','2'),('3','3年级','3'),('4','4年级','4')])
  37. #提交
  38. conn.commit()
  39. print(f'增加的行数{rows}')
  40. #创建新增sql语句的函数-新增大量数据
  41. def inserts_sql_many():
  42. #执行sql语句,批量新增,我这里演示就没插入那么多,自己想插入多少数据,自己在for循环里修改
  43. values=[]
  44. for i in range(100,106):
  45. values.append((i,str(i)+'年级',i))
  46. sql='insert into class(cid,caption,grade_id) values(%s,%s,%s)'
  47. rows=cursor.executemany(sql,values)
  48. #提交
  49. conn.commit()
  50. print(f'增加的行数{rows}')
  51. if __name__ == '__main__':
  52. #search_sql()
  53. #insert_sql()
  54. #inserts_sql()
  55. inserts_sql_many()
  56. # 关闭游标
  57. cursor.close()
  58. # 关闭连接
  59. conn.close()

运行结果:

查看数据库class表中的数据:

四.修改数据

1.单条

再原来的代码基础上,新增update_sql()函数

  1. import pymysql
  2. #建立数据库连接
  3. conn=pymysql.connect(
  4. host='127.0.0.1', #主机名
  5. port=3306,#端口号
  6. user='root',#用户名
  7. password='123456',#密码
  8. db='testMysql',#数据库名
  9. charset='utf8'
  10. )
  11. #获取游标
  12. cursor=conn.cursor()
  13. #创建查询sql语句的函数
  14. def search_sql():
  15. #执行sql语句
  16. sql='select * from class'
  17. rows=cursor.execute(sql) #返回结果是受影响的行数
  18. print(rows) #数据库的class还没有数据,所以rows应该是0
  19. # 判断是否连接成功
  20. if rows >= 0:
  21. print('数据库连接成功')
  22. else:
  23. print('数据库连接失败')
  24. #创建新增sql语句的函数-单条数据
  25. def insert_sql():
  26. #执行sql
  27. sql='insert into class(cid,caption,grade_id) values(%s,%s,%s)'
  28. rows=cursor.execute(sql,('1','1年级','1'))
  29. #提交
  30. conn.commit()
  31. print(f'增加的行数{rows}')
  32. #创建新增sql语句的函数-多条数据
  33. def inserts_sql():
  34. #执行sql
  35. sql='insert into class(cid,caption,grade_id) values(%s,%s,%s)'
  36. rows=cursor.executemany(sql,[('2','2年级','2'),('3','3年级','3'),('4','4年级','4')])
  37. #提交
  38. conn.commit()
  39. print(f'增加的行数{rows}')
  40. #创建新增sql语句的函数-新增大量数据
  41. def inserts_sql_many():
  42. #执行sql语句,批量新增,我这里演示就没插入那么多,自己想插入多少数据,自己在for循环里修改
  43. values=[]
  44. for i in range(100,106):
  45. values.append((i,str(i)+'年级',i))
  46. sql='insert into class(cid,caption,grade_id) values(%s,%s,%s)'
  47. rows=cursor.executemany(sql,values)
  48. #提交
  49. conn.commit()
  50. print(f'增加的行数{rows}')
  51. #创建修改sql语句的函数-单条数据
  52. def update_sql():
  53. #执行sql
  54. sql='update class set caption=%s where cid=%s'
  55. rows=cursor.execute(sql,('修改年级','3'))
  56. #提交
  57. conn.commit()
  58. print(f'修改的行数{rows}')
  59. if __name__ == '__main__':
  60. #search_sql()
  61. #insert_sql()
  62. #inserts_sql()
  63. #inserts_sql_many()
  64. update_sql()
  65. # 关闭游标
  66. cursor.close()
  67. # 关闭连接
  68. conn.close()

运行结果:

查看数据库class表中的数据:

2.多条

再原来的代码基础上,新增updates_sql()函数

  1. import pymysql
  2. #建立数据库连接
  3. conn=pymysql.connect(
  4. host='127.0.0.1', #主机名
  5. port=3306,#端口号
  6. user='root',#用户名
  7. password='123456',#密码
  8. db='testMysql',#数据库名
  9. charset='utf8'
  10. )
  11. #获取游标
  12. cursor=conn.cursor()
  13. #创建查询sql语句的函数
  14. def search_sql():
  15. #执行sql语句
  16. sql='select * from class'
  17. rows=cursor.execute(sql) #返回结果是受影响的行数
  18. print(rows) #数据库的class还没有数据,所以rows应该是0
  19. # 判断是否连接成功
  20. if rows >= 0:
  21. print('数据库连接成功')
  22. else:
  23. print('数据库连接失败')
  24. #创建新增sql语句的函数-单条数据
  25. def insert_sql():
  26. #执行sql
  27. sql='insert into class(cid,caption,grade_id) values(%s,%s,%s)'
  28. rows=cursor.execute(sql,('1','1年级','1'))
  29. #提交
  30. conn.commit()
  31. print(f'增加的行数{rows}')
  32. #创建新增sql语句的函数-多条数据
  33. def inserts_sql():
  34. #执行sql
  35. sql='insert into class(cid,caption,grade_id) values(%s,%s,%s)'
  36. rows=cursor.executemany(sql,[('2','2年级','2'),('3','3年级','3'),('4','4年级','4')])
  37. #提交
  38. conn.commit()
  39. print(f'增加的行数{rows}')
  40. #创建新增sql语句的函数-新增大量数据
  41. def inserts_sql_many():
  42. #执行sql语句,批量新增,我这里演示就没插入那么多,自己想插入多少数据,自己在for循环里修改
  43. values=[]
  44. for i in range(100,106):
  45. values.append((i,str(i)+'年级',i))
  46. sql='insert into class(cid,caption,grade_id) values(%s,%s,%s)'
  47. rows=cursor.executemany(sql,values)
  48. #提交
  49. conn.commit()
  50. print(f'增加的行数{rows}')
  51. #创建修改sql语句的函数-单条数据
  52. def update_sql():
  53. #执行sql
  54. sql='update class set caption=%s where cid=%s'
  55. rows=cursor.execute(sql,('修改年级','3'))
  56. #提交
  57. conn.commit()
  58. print(f'修改的行数{rows}')
  59. #创建修改sql语句的函数-多条数据
  60. def updates_sql():
  61. #执行sql
  62. sql='update class set caption=%s where cid=%s'
  63. rows=cursor.executemany(sql,[('修改1年级','100'),('修改2年级','101')])
  64. #提交
  65. conn.commit()
  66. print(f'修改的行数{rows}')
  67. if __name__ == '__main__':
  68. #search_sql()
  69. #insert_sql()
  70. #inserts_sql()
  71. #inserts_sql_many()
  72. #update_sql()
  73. updates_sql()
  74. # 关闭游标
  75. cursor.close()
  76. # 关闭连接
  77. conn.close()

运行结果:

查看数据库class表中的数据:

五.删除数据

1.单条

再原来的代码基础上,新增delete_sql()函数

  1. import pymysql
  2. #建立数据库连接
  3. conn=pymysql.connect(
  4. host='127.0.0.1', #主机名
  5. port=3306,#端口号
  6. user='root',#用户名
  7. password='123456',#密码
  8. db='testMysql',#数据库名
  9. charset='utf8'
  10. )
  11. #获取游标
  12. cursor=conn.cursor()
  13. #创建查询sql语句的函数
  14. def search_sql():
  15. #执行sql语句
  16. sql='select * from class'
  17. rows=cursor.execute(sql) #返回结果是受影响的行数
  18. print(rows) #数据库的class还没有数据,所以rows应该是0
  19. # 判断是否连接成功
  20. if rows >= 0:
  21. print('数据库连接成功')
  22. else:
  23. print('数据库连接失败')
  24. #创建新增sql语句的函数-单条数据
  25. def insert_sql():
  26. #执行sql
  27. sql='insert into class(cid,caption,grade_id) values(%s,%s,%s)'
  28. rows=cursor.execute(sql,('1','1年级','1'))
  29. #提交
  30. conn.commit()
  31. print(f'增加的行数{rows}')
  32. #创建新增sql语句的函数-多条数据
  33. def inserts_sql():
  34. #执行sql
  35. sql='insert into class(cid,caption,grade_id) values(%s,%s,%s)'
  36. rows=cursor.executemany(sql,[('2','2年级','2'),('3','3年级','3'),('4','4年级','4')])
  37. #提交
  38. conn.commit()
  39. print(f'增加的行数{rows}')
  40. #创建新增sql语句的函数-新增大量数据
  41. def inserts_sql_many():
  42. #执行sql语句,批量新增,我这里演示就没插入那么多,自己想插入多少数据,自己在for循环里修改
  43. values=[]
  44. for i in range(100,106):
  45. values.append((i,str(i)+'年级',i))
  46. sql='insert into class(cid,caption,grade_id) values(%s,%s,%s)'
  47. rows=cursor.executemany(sql,values)
  48. #提交
  49. conn.commit()
  50. print(f'增加的行数{rows}')
  51. #创建修改sql语句的函数-单条数据
  52. def update_sql():
  53. #执行sql
  54. sql='update class set caption=%s where cid=%s'
  55. rows=cursor.execute(sql,('修改年级','3'))
  56. #提交
  57. conn.commit()
  58. print(f'修改的行数{rows}')
  59. #创建修改sql语句的函数-多条数据
  60. def updates_sql():
  61. #执行sql
  62. sql='update class set caption=%s where cid=%s'
  63. rows=cursor.executemany(sql,[('修改1年级','100'),('修改2年级','101')])
  64. #提交
  65. conn.commit()
  66. print(f'修改的行数{rows}')
  67. #删除数据-单条
  68. def delete_sql():
  69. #执行sql
  70. sql='delete from class where cid=%s'
  71. rows=cursor.execute(sql,('102',))
  72. #提交
  73. conn.commit()
  74. print(f'删除的行数{rows}')
  75. if __name__ == '__main__':
  76. #search_sql()
  77. #insert_sql()
  78. #inserts_sql()
  79. #inserts_sql_many()
  80. #update_sql()
  81. # updates_sql()
  82. delete_sql()
  83. # 关闭游标
  84. cursor.close()
  85. # 关闭连接
  86. conn.close()

运行结果:

查看数据库class表中的数据:

省略

2.多条

再原来的代码基础上,新增deletes_sql()函数

  1. import pymysql
  2. #建立数据库连接
  3. conn=pymysql.connect(
  4. host='127.0.0.1', #主机名
  5. port=3306,#端口号
  6. user='root',#用户名
  7. password='123456',#密码
  8. db='testMysql',#数据库名
  9. charset='utf8'
  10. )
  11. #获取游标
  12. cursor=conn.cursor()
  13. #创建查询sql语句的函数
  14. def search_sql():
  15. #执行sql语句
  16. sql='select * from class'
  17. rows=cursor.execute(sql) #返回结果是受影响的行数
  18. print(rows) #数据库的class还没有数据,所以rows应该是0
  19. # 判断是否连接成功
  20. if rows >= 0:
  21. print('数据库连接成功')
  22. else:
  23. print('数据库连接失败')
  24. #创建新增sql语句的函数-单条数据
  25. def insert_sql():
  26. #执行sql
  27. sql='insert into class(cid,caption,grade_id) values(%s,%s,%s)'
  28. rows=cursor.execute(sql,('1','1年级','1'))
  29. #提交
  30. conn.commit()
  31. print(f'增加的行数{rows}')
  32. #创建新增sql语句的函数-多条数据
  33. def inserts_sql():
  34. #执行sql
  35. sql='insert into class(cid,caption,grade_id) values(%s,%s,%s)'
  36. rows=cursor.executemany(sql,[('2','2年级','2'),('3','3年级','3'),('4','4年级','4')])
  37. #提交
  38. conn.commit()
  39. print(f'增加的行数{rows}')
  40. #创建新增sql语句的函数-新增大量数据
  41. def inserts_sql_many():
  42. #执行sql语句,批量新增,我这里演示就没插入那么多,自己想插入多少数据,自己在for循环里修改
  43. values=[]
  44. for i in range(100,106):
  45. values.append((i,str(i)+'年级',i))
  46. sql='insert into class(cid,caption,grade_id) values(%s,%s,%s)'
  47. rows=cursor.executemany(sql,values)
  48. #提交
  49. conn.commit()
  50. print(f'增加的行数{rows}')
  51. #创建修改sql语句的函数-单条数据
  52. def update_sql():
  53. #执行sql
  54. sql='update class set caption=%s where cid=%s'
  55. rows=cursor.execute(sql,('修改年级','3'))
  56. #提交
  57. conn.commit()
  58. print(f'修改的行数{rows}')
  59. #创建修改sql语句的函数-多条数据
  60. def updates_sql():
  61. #执行sql
  62. sql='update class set caption=%s where cid=%s'
  63. rows=cursor.executemany(sql,[('修改1年级','100'),('修改2年级','101')])
  64. #提交
  65. conn.commit()
  66. print(f'修改的行数{rows}')
  67. #删除数据-单条
  68. def delete_sql():
  69. #执行sql
  70. sql='delete from class where cid=%s'
  71. rows=cursor.execute(sql,('102',))
  72. #提交
  73. conn.commit()
  74. print(f'删除的行数{rows}')
  75. #删除数据-多条
  76. def deletes_sql():
  77. #执行sql
  78. sql='delete from class where cid=%s'
  79. rows=cursor.executemany(sql,[('100',),('103',)])
  80. #提交
  81. conn.commit()
  82. print(f'删除的行数{rows}')
  83. if __name__ == '__main__':
  84. #search_sql()
  85. #insert_sql()
  86. #inserts_sql()
  87. #inserts_sql_many()
  88. #update_sql()
  89. # updates_sql()
  90. #delete_sql()
  91. deletes_sql()
  92. # 关闭游标
  93. cursor.close()
  94. # 关闭连接
  95. conn.close()

运行结果:

查看数据库class表中的数据:

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/795257
推荐阅读
相关标签
  

闽ICP备14008679号