PyMysql复习
参考:http://www.cnblogs.com/liwenzhou/p/8032238.html
使用pycharm操作数据库。
填一个数据库名,User:填root
填写要连接的数据库。
建表。
上传填写完的数据库。
PyMysql操作数据库。
- import pymysql
- # 拿到用户输入的用户名密码
- # 去数据库里面判断用户名和密码是否正确
- # 1. 连接数据库
- conn = pymysql.connect(
- host="localhost",
- port=3306, # 端口号是数字类型
- database="userinfo", # 写自己本地的数据库名字
- user="root",
- password="1**3*8",
- charset="utf8" # 千万记得没有-
- )
- cursor = conn.cursor() # 获取输入SQL语句的 光标 对象
- sql = "select * from info;"
- ret = cursor.execute(sql)
- print(ret)
- # 关闭连接
- cursor.close()
- conn.close()
结果:
- 3
- Process finished with exit code 0
SQL防注入
- import pymysql
- # 获取用户输入
- username = input("输入用户名:")
- pwd = input("请输入密码:")
- # 连接数据库检索有没有该用户
- conn = pymysql.connect(
- host="localhost",
- port=3306,
- database="userinfo",
- user="root",
- password="",
- charset="utf8"
- )
- cursor = conn.cursor() # 获取光标
- # 拼接要执行的SQL语句
- sql = 'select * from info where username=%s and password=%s' # %s 不再需要引号
- print(sql)
- print("=" * 120)
- # 执行SQL语句
- ret = cursor.execute(sql, [username, pwd]) # 让pymysql帮我们拼接SQL语句
- if ret:
- print("登录成功")
- else:
- print("登录失败!")
- # 关闭光标对像
- cursor.close()
- # 关闭连接
- conn.close()
数据出错回滚操作:
- """
- pymysql增操作
- """
- import pymysql
- conn = pymysql.connect(
- host="localhost",
- port=3306,
- database="userinfo",
- user="root",
- password="1×××××",
- charset="utf8"
- )
- cursor = conn.cursor()#获取要执行的光标
- # 拼接语句
- sql = "insert into info (username, password)VALUES (%s, %s)"
- # 执行
- try:
- cursor.execute(sql, ["大旭",])
- # 自己写个for循环 (今天作业自己试下)
- conn.commit() #确认
- except Exception as e:
- print("报错啦:", str(e))
- conn.rollback() # 错误回滚
- # 对数据库做写操作一定要记得提交assword
- cursor.close()
- conn.close()
lastrowid(cid是获取的另一张表的id,使两个id对应)
- import pymysql
- conn = pymysql.connect(
- host="localhost",
- port=3306,
- database="userinfo",
- user="root",
- password="",
- charset="utf8"
- )
- cursor = conn.cursor()
- # 创建班级的sql语句
- sql1 = "insert into class (name) VALUES (%s)"
- # 创建学生的sql语句
- sql2 = "insert into student (name, cid) VALUES (%s, %s)"
- cursor.execute(sql1, "全栈9期")
- new_id = cursor.lastrowid # 获取刚插入数据的ID值
- cursor.execute(sql2, ["小东北", new_id])
- conn.commit()
- cursor.close()
- conn.close()
- import pymysql
- conn = pymysql.connect(
- host="localhost",
- port=3306,
- database="userinfo",
- user="root",
- password="1*****",
- charset="utf8"
- )
- cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 指定返回的数据格式为字典格式
- sql = "select * from info"
- cursor.execute(sql) # 返回的不是具体的数据而是受影响的行数
- # ret = cursor.fetchall() # 返回所有的数据
- # ret = cursor.fetchone() # 返回第一条的数据
- # print(ret)
- # ret = cursor.fetchone() # 返回一条的数据
- # print(ret)
- # ret = cursor.fetchone() # 返回一条的数据
- # print(ret)
- # ret = cursor.fetchone() # 返回一条的数据
- # print(ret)
- # ret = cursor.fetchone() # 返回一条的数据
- # print(ret)
- # ret = cursor.fetchone() # 返回一条的数据
- # print(ret)
- # ret = cursor.fetchone() # 返回一条的数据
- # print(ret)
- ret = cursor.fetchmany(3) # 查询具体多少条数据
- print(ret)
- # cursor.scroll(0, mode="absolute") # 绝对移动,写多少就是移到多少
- cursor.scroll(-1, mode="relative") # 光标往前移一格
- ret = cursor.fetchall() #( -1 )这里的光标是从第3条后开始的
- print(ret)
- cursor.close()
- conn.close()
结果:
- [{'username': '田径', 'password': 'abcde', 'id': 1}, {'username': '调高', 'password': 'cscsj', 'id': 2}, {'username': '篮球', 'password': 'haha', 'id': 3}]
- [{'username': '篮球', 'password': 'haha', 'id': 3}]
- Process finished with exit code 0
PyMysql复习的更多相关文章
- sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError)
在我学习flask建立网站时间碰到了一个棘手的问题,就是在我进行操作日志的更新时间,发现表格建立有点错误,导致表缺失,从而报了下面的错误 sqlalchemy.exc.ProgrammingError ...
- python基础复习
复习-基础 一.review-base 其他语言吗和python的对比 c vs Python c语言是python的底层实现,解释器就是由python编写的. c语言开发的程序执行效率高,开发现率低 ...
- day43 多表查询和pymysql
复习 增删改查全语法 # 增 insert into db1.t1(字段2, 字段1, ..., 字段n)|省略 values (值2, 值1, ..., 值n)|(值1, 值2, ..., 值n)[ ...
- auth复习和BBS项目的登录(1)
auth复习 auth组件 验证:authenticate(request,username='andy',password='123) 登录:login(request,user) 注销:login ...
- 巩固复习(Django最基础的部分_具体查看官方文档)
Django学习路1 1.脚本不能随便运行,没准 linux 运行完就上不去了 2.pip 在 linux 上 写 pip3 同理 python 写为 python3 3.在 pycharm 上安装库 ...
- iOS总结_UI层自我复习总结
UI层复习笔记 在main文件中,UIApplicationMain函数一共做了三件事 根据第三个参数创建了一个应用程序对象 默认写nil,即创建的是UIApplication类型的对象,此对象看成是 ...
- vuex复习方案
这次复习vuex,发现官方vuex2.0的文档写得太简略了,有些看不懂了.然后看了看1.0的文档,感觉很不错.那以后需要复习的话,还是先看1.0的文档吧.
- 我的操作系统复习——I/O控制和系统调用
上篇博客介绍了存储器管理的相关知识——我的操作系统复习——存储器管理,本篇讲设备管理中的I/O控制方式和操作系统中的系统调用. 一.I/O控制方式 I/O就是输入输出,I/O设备指的是输入输出设备和存 ...
- pyMysql
本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...
随机推荐
- makeuque
http://blog.csdn.net/10km/article/details/49867479
- windows10 装linux子系统
http://blog.csdn.net/Yuxin_Liu/article/details/52347898 试了一下,下载太慢,就没继续用,可以用实验楼这个网来玩玩linux
- 2018.10.05 NOIP模拟 相遇(dfs序+lca)
传送门 考虑到两条路径相交的条件: 设两条路径为a,ba,ba,b. 则要么aaa路径的lcalcalca在bbb上. 要么bbb路径的lcalcalca在aaa上. 因此我们维护两棵树. 分别支持路 ...
- hdu-1026(bfs+优先队列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1026 题意:输入n,m和一个n*m的矩阵, .表示通路: x表示墙: n表示有一个怪物,消灭它需要n个 ...
- C++之类和对象的特性
简介:C++并不是一个纯粹的面向对象的语言,而是一种基于过程和面向对象的混合型的语言. 凡是以类对象为基本构成单位的程序称为基于对象的程序,再加上抽象.封装.继承和多态就成为面向对象程序. 1.掌握类 ...
- js之create()
语法: Object.create(proto, [propertiesObject]) 返回一个新的对象的指针 proto:对象会被作为新创建的对象的原型 [propertiesObject]:对象 ...
- centos7安装 docker
centos7安装 docker 切换到 root用户,执行: [root@localhost frinder]# yum install docker已加载插件:fastestmirror, lan ...
- 几个CSS-content的小例子
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- android build.gradle(groovy)
一.build.Gradle 这个 build.Gradle 文件来自 drakeet 大神的 Meizi 项目我直接在代码上加注释,参照着注释看代码就行,是不是发现有很多代码平时都没看见过. //M ...
- hdu 4957 贪心破木桶接水大trick
http://acm.hdu.edu.cn/showproblem.php?pid=4957 拿n只破的木桶去接水,每只木桶漏水速度为a[i],最后要得到b[i]单位的水,自来水的出水速度为V,木桶里 ...