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 ...
随机推荐
- FutureTask详解
1 基本概念 1.1 Callable与Future Runnable封装一个异步运行的任务,可以把它想象成为一个没有参数和返回值的异步方法.Callable与Runnable类似,但是有返回值.Ca ...
- 版本号比较函数-js
面试前,让做的一个版本号比较函数. <script type="text/javascript"> var v1=prompt("请输入第一个版本号" ...
- 品味性能之道<三>:方法论
自顶向下的性能优化方法论 系统优化是包括系统设计.开发.产品上线.平台优化的全过程,不同阶段的优化工作对全系统所带来的效益是不同的.理想的性能优化论应该采用自顶向下的优化方法,即在项目设计.开发和上线 ...
- hadoop群集 启动
###注意:严格按照下面的步骤 .5启动zookeeper集群(分别在itcast04.itcast05.itcast06上启动zk) cd /itcast/zookeeper-/bin/ ./zkS ...
- Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8 整合例子
转自:http://www.blogjava.net/wangxinsh55/archive/2011/07/24/354925.html Jbpm4.4+hibernate3.5.4+sprin ...
- c++中嵌套类,外部类访问内部类的私有成员变量
在嵌套类中,内部类可以直接访问外部类的私有成员变量,但是外部类不能直接访问内部类的私有成员变量,必须把外部类声明为内部类的友元类 /********************************** ...
- 2018.07.04 POJ 1654 Area(简单计算几何)
Area Time Limit: 1000MS Memory Limit: 10000K Description You are going to compute the area of a spec ...
- Android中的Service 与 Thread 的区别[转]
很多时候,你可能会问,为什么要用 Service,而不用 Thread 呢,因为用 Thread 是很方便的,比起 Service 也方便多了,下面我详细的来解释一下. 1). Thread:Thre ...
- Swift中的闭包(Closure)[转]
闭包在Swift中非常有用.通俗的解释就是一个Int类型里存储着一个整数,一个String类型包含着一串字符,同样,闭包是一个包含着函数的类型.有了闭包,你就可以处理很多在一些古老的语言中不能处理的事 ...
- Quartus II中使用脚本转换sof到rbf文件
1. 新建一个文本文件,保存为任意但有意义的名字,如:sof_to_rbf.bat,注意,保存时请不要使用默认的格式,应该手动从.txt切换为all files 2. 在文本中输入以下内容: %Q ...