飞道的博客

Python操作mysql数据库

393人阅读  评论(0)

利用Navicat Premium 15软件连接mysql数据库,新建testdb数据库,并添加2个表usertest和userinfo。

 

main.py


  
  1. #!/usr/bin/python3
  2. # -*- coding: utf-8 -*-
  3. import re
  4. import pymysql # 导入模块
  5. myConn = pymysql.connect(
  6. host= '127.0.0.1', # 主机模块
  7. port= 3306, # 端口号
  8. user= 'root', # 用户名
  9. password= 'root', # 密码
  10. database= 'testdb', # 需要连接的数据库
  11. charset= 'utf8' # 指定编码utf8
  12. )
  13. if __name__ == '__main__':
  14. # myCursor = myConn.cursor() # 获取游标,默认游标类型为元组形式
  15. myCursor = myConn.cursor(pymysql.cursors.DictCursor) # 获取的查询结果更加规范化 便于分辨
  16. sql = "select * from userTest;"
  17. row_count = myCursor.execute(sql) # row_count 受影响的行数
  18. for x in myCursor.fetchall(): # 取出所有的
  19. print(x)
  20. try:
  21. # ===插入记录===
  22. sql = "INSERT INTO userTest(id,name,age) VALUES(%s, %s, %s)"
  23. val = ( 6, "John", 23)
  24. myCursor.execute(sql, val) # 执行sql语句
  25. """
  26. val = [(7, "Lily", 30),
  27. (8, "Martin", 35),
  28. (9, "Sally", 32)]
  29. myCursor.executemany(sql, val) # 插入多行数据时,执行sql语句
  30. """
  31. # ===修改记录===
  32. # 以字符串形式书写SQL语句
  33. sql = "update userTest set name = '刘琪' where name = '韩寒'; "
  34. # 执行SQL语句
  35. row_count = myCursor.execute(sql)
  36. # ===删除记录===
  37. # 以字符串形式书写SQL语句
  38. sql = "delete from userTest where name= '王五' ;"
  39. # 执行SQL语句
  40. row_count = myCursor.execute(sql)
  41. myConn.commit() # 增删改操作时,需要进行提交
  42. except Exception as err:
  43. # 检查异常原因是否是感兴趣的
  44. result1 = re.search( 'Duplicate entry.*key.*PRIMARY', str(err))
  45. # 如果是,什么都不用做
  46. # 否则(也不知道是什么原因),那就回滚吧
  47. if result1 is None:
  48. myConn.rollback()
  49. raise
  50. myCursor = myConn.cursor(pymysql.cursors.DictCursor) # 获取的查询结果更加规范化 便于分辨
  51. sql = "select * from userTest;"
  52. row_count = myCursor.execute(sql) # row_count受影响的行数
  53. for x in myCursor.fetchall(): # 取出所有的
  54. print(x)
  55. # =====使用数据来进行一下用户名和密码的认证操作======
  56. myCursor = myConn.cursor(pymysql.cursors.DictCursor)
  57. usr = input( '请输入用户名:').strip()
  58. pwd = input( '请输入密码:').strip()
  59. # 当已知用户名时 破解密码为 (feng'-- dfadasdad)
  60. # 当未知用户名密码时 破解密码为 (fsdf' or 1=1 -- fdsfsdfs)
  61. try:
  62. sql = "select * from userinfo where username='%s' and password='%s';" % (usr, pwd)
  63. # res我们说是得到的行数,如果这个行数不为零,说明用户输入的用户名和密码存在,如果为0说明不存在
  64. row_count = myCursor.execute(sql) # pymysql 模块会自动将输入的特殊字符删除
  65. print(row_count) # 如果输入的用户名和密码错误,这个结果为0,如果正确,这个结果为1
  66. if row_count:
  67. print( '登陆成功')
  68. else:
  69. print( '用户名和密码错误!')
  70. except Exception as err:
  71. # 检查异常原因是否是感兴趣的
  72. result1 = re.search( 'Duplicate entry.*key.*PRIMARY', str(err))
  73. # 如果是,什么都不用做
  74. # 否则(也不知道是什么原因),那就回滚吧
  75. if result1 is None:
  76. myConn.rollback()
  77. raise
  78. myCursor.close() # 关闭游标
  79. myConn.close() # 关闭连接

 


转载:https://blog.csdn.net/u013541325/article/details/117389067
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场