参考:http://www.cnblogs.com/liwenzhou/p/8032238.html

使用pycharm操作数据库。

填一个数据库名,User:填root

填写要连接的数据库。

建表。

上传填写完的数据库。

PyMysql操作数据库。

  1. import pymysql
  2.  
  3. # 拿到用户输入的用户名密码
  4.  
  5. # 去数据库里面判断用户名和密码是否正确
  6. # 1. 连接数据库
  7. conn = pymysql.connect(
  8. host="localhost",
  9. port=3306, # 端口号是数字类型
  10. database="userinfo", # 写自己本地的数据库名字
  11. user="root",
  12. password="1**3*8",
  13. charset="utf8" # 千万记得没有-
  14. )
  15.  
  16. cursor = conn.cursor() # 获取输入SQL语句的 光标 对象
  17. sql = "select * from info;"
  18. ret = cursor.execute(sql)
  19. print(ret)
  20. # 关闭连接
  21. cursor.close()
  22. conn.close()

结果:

  1. 3
  2.  
  3. Process finished with exit code 0

SQL防注入

  1. import pymysql
  2.  
  3. # 获取用户输入
  4. username = input("输入用户名:")
  5. pwd = input("请输入密码:")
  6.  
  7. # 连接数据库检索有没有该用户
  8. conn = pymysql.connect(
  9. host="localhost",
  10. port=3306,
  11. database="userinfo",
  12. user="root",
  13. password="",
  14. charset="utf8"
  15. )
  16.  
  17. cursor = conn.cursor() # 获取光标
  18. # 拼接要执行的SQL语句
  19. sql = 'select * from info where username=%s and password=%s' # %s 不再需要引号
  20. print(sql)
  21. print("=" * 120)
  22. # 执行SQL语句
  23. ret = cursor.execute(sql, [username, pwd]) # 让pymysql帮我们拼接SQL语句
  24. if ret:
  25. print("登录成功")
  26. else:
  27. print("登录失败!")
  28. # 关闭光标对像
  29. cursor.close()
  30. # 关闭连接
  31. conn.close()

数据出错回滚操作:

  1. """
  2. pymysql增操作
  3. """
  4.  
  5. import pymysql
  6.  
  7. conn = pymysql.connect(
  8. host="localhost",
  9. port=3306,
  10. database="userinfo",
  11. user="root",
  12. password="1×××××",
  13. charset="utf8"
  14. )
  15.  
  16. cursor = conn.cursor()#获取要执行的光标
  17.  
  18. # 拼接语句
  19. sql = "insert into info (username, password)VALUES (%s, %s)"
  20. # 执行
  21. try:
  22. cursor.execute(sql, ["大旭",])
  23. # 自己写个for循环 (今天作业自己试下)
  24. conn.commit() #确认
  25. except Exception as e:
  26. print("报错啦:", str(e))
  27. conn.rollback() # 错误回滚
  28. # 对数据库做写操作一定要记得提交assword
  29.  
  30. cursor.close()
  31. conn.close()

lastrowid(cid是获取的另一张表的id,使两个id对应)

  1. import pymysql
  2.  
  3. conn = pymysql.connect(
  4. host="localhost",
  5. port=3306,
  6. database="userinfo",
  7. user="root",
  8. password="",
  9. charset="utf8"
  10. )
  11.  
  12. cursor = conn.cursor()
  13. # 创建班级的sql语句
  14. sql1 = "insert into class (name) VALUES (%s)"
  15. # 创建学生的sql语句
  16. sql2 = "insert into student (name, cid) VALUES (%s, %s)"
  17.  
  18. cursor.execute(sql1, "全栈9期")
  19. new_id = cursor.lastrowid # 获取刚插入数据的ID值
  20. cursor.execute(sql2, ["小东北", new_id])
  21. conn.commit()
  22.  
  23. cursor.close()
  24. conn.close()
  1. import pymysql
  2.  
  3. conn = pymysql.connect(
  4. host="localhost",
  5. port=3306,
  6. database="userinfo",
  7. user="root",
  8. password="1*****",
  9. charset="utf8"
  10. )
  11.  
  12. cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 指定返回的数据格式为字典格式
  13.  
  14. sql = "select * from info"
  15.  
  16. cursor.execute(sql) # 返回的不是具体的数据而是受影响的行数
  17. # ret = cursor.fetchall() # 返回所有的数据
  18. # ret = cursor.fetchone() # 返回第一条的数据
  19. # print(ret)
  20. # ret = cursor.fetchone() # 返回一条的数据
  21. # print(ret)
  22. # ret = cursor.fetchone() # 返回一条的数据
  23. # print(ret)
  24. # ret = cursor.fetchone() # 返回一条的数据
  25. # print(ret)
  26. # ret = cursor.fetchone() # 返回一条的数据
  27. # print(ret)
  28. # ret = cursor.fetchone() # 返回一条的数据
  29. # print(ret)
  30. # ret = cursor.fetchone() # 返回一条的数据
  31. # print(ret)
  32.  
  33. ret = cursor.fetchmany(3) # 查询具体多少条数据
  34. print(ret)
  35. # cursor.scroll(0, mode="absolute") # 绝对移动,写多少就是移到多少
  36.  
  37. cursor.scroll(-1, mode="relative") # 光标往前移一格
  38. ret = cursor.fetchall() #( -1 )这里的光标是从第3条后开始的
  39. print(ret)
  40. cursor.close()
  41. conn.close()

结果:

  1. [{'username': '田径', 'password': 'abcde', 'id': 1}, {'username': '调高', 'password': 'cscsj', 'id': 2}, {'username': '篮球', 'password': 'haha', 'id': 3}]
  2. [{'username': '篮球', 'password': 'haha', 'id': 3}]
  3.  
  4. Process finished with exit code 0

PyMysql复习的更多相关文章

  1. sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError)

    在我学习flask建立网站时间碰到了一个棘手的问题,就是在我进行操作日志的更新时间,发现表格建立有点错误,导致表缺失,从而报了下面的错误 sqlalchemy.exc.ProgrammingError ...

  2. python基础复习

    复习-基础 一.review-base 其他语言吗和python的对比 c vs Python c语言是python的底层实现,解释器就是由python编写的. c语言开发的程序执行效率高,开发现率低 ...

  3. day43 多表查询和pymysql

    复习 增删改查全语法 # 增 insert into db1.t1(字段2, 字段1, ..., 字段n)|省略 values (值2, 值1, ..., 值n)|(值1, 值2, ..., 值n)[ ...

  4. auth复习和BBS项目的登录(1)

    auth复习 auth组件 验证:authenticate(request,username='andy',password='123) 登录:login(request,user) 注销:login ...

  5. 巩固复习(Django最基础的部分_具体查看官方文档)

    Django学习路1 1.脚本不能随便运行,没准 linux 运行完就上不去了 2.pip 在 linux 上 写 pip3 同理 python 写为 python3 3.在 pycharm 上安装库 ...

  6. iOS总结_UI层自我复习总结

    UI层复习笔记 在main文件中,UIApplicationMain函数一共做了三件事 根据第三个参数创建了一个应用程序对象 默认写nil,即创建的是UIApplication类型的对象,此对象看成是 ...

  7. vuex复习方案

    这次复习vuex,发现官方vuex2.0的文档写得太简略了,有些看不懂了.然后看了看1.0的文档,感觉很不错.那以后需要复习的话,还是先看1.0的文档吧.

  8. 我的操作系统复习——I/O控制和系统调用

    上篇博客介绍了存储器管理的相关知识——我的操作系统复习——存储器管理,本篇讲设备管理中的I/O控制方式和操作系统中的系统调用. 一.I/O控制方式 I/O就是输入输出,I/O设备指的是输入输出设备和存 ...

  9. pyMysql

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

随机推荐

  1. makeuque

    http://blog.csdn.net/10km/article/details/49867479

  2. windows10 装linux子系统

    http://blog.csdn.net/Yuxin_Liu/article/details/52347898 试了一下,下载太慢,就没继续用,可以用实验楼这个网来玩玩linux

  3. 2018.10.05 NOIP模拟 相遇(dfs序+lca)

    传送门 考虑到两条路径相交的条件: 设两条路径为a,ba,ba,b. 则要么aaa路径的lcalcalca在bbb上. 要么bbb路径的lcalcalca在aaa上. 因此我们维护两棵树. 分别支持路 ...

  4. hdu-1026(bfs+优先队列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1026 题意:输入n,m和一个n*m的矩阵, .表示通路: x表示墙: n表示有一个怪物,消灭它需要n个 ...

  5. C++之类和对象的特性

    简介:C++并不是一个纯粹的面向对象的语言,而是一种基于过程和面向对象的混合型的语言. 凡是以类对象为基本构成单位的程序称为基于对象的程序,再加上抽象.封装.继承和多态就成为面向对象程序. 1.掌握类 ...

  6. js之create()

    语法: Object.create(proto, [propertiesObject]) 返回一个新的对象的指针 proto:对象会被作为新创建的对象的原型 [propertiesObject]:对象 ...

  7. centos7安装 docker

    centos7安装 docker 切换到 root用户,执行: [root@localhost frinder]# yum install docker已加载插件:fastestmirror, lan ...

  8. 几个CSS-content的小例子

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. android build.gradle(groovy)

    一.build.Gradle 这个 build.Gradle 文件来自 drakeet 大神的 Meizi 项目我直接在代码上加注释,参照着注释看代码就行,是不是发现有很多代码平时都没看见过. //M ...

  10. hdu 4957 贪心破木桶接水大trick

    http://acm.hdu.edu.cn/showproblem.php?pid=4957 拿n只破的木桶去接水,每只木桶漏水速度为a[i],最后要得到b[i]单位的水,自来水的出水速度为V,木桶里 ...