在进行本文以下内容之前需要注意:

1、你有一个MySQL数据库,并且已经启动。
2、你有可以连接该数据库的用户名和密码
3、你有一个有权限操作的database

连接数据库

#导入pymsql
import pymsql name = input("name>>>").strip()
pwd = input("password>>>").strip() #连接数据库
conn = pymysql.connect(host='localhost',port=3306,user='root',password='123456',database='db3',charset='utf8') #获取光标对象
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) #返回的是一个含有多个字典的列表
#cursor = conn.cursor() #返回的是一个含有多个元组的元组 #执行sql语句 # sql = "select * from userinfo where name='%s' and password='%s';"%(name,pwd)
# res = cursor.execute(sql) #解决sql注入的问题
sql = "select * from userinfo where name=%s and password=%s;" #获得受影响的信息条数
res = cursor.execute(sql,[name,pwd]) #让pymsql帮我们拼接sql语句
print(res) #获取数据
ret = cursor.fetchall()
print(ret) #关闭连接
cursor.close()
conn.close()

数据库的增删改查

除了查的操作不用conn.commit()外,其他的操作都需要

import pymysql

conn = pymysql.connect(host='localhost',port=3306,user='root',password='123456',database='db3',charset='utf8')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) #添加一条信息
sql = "insert into userinfo(name,password) values(%s,%s)"
res = cursor.execute(sql,["rain222","1234"])
print(res) #批量增加
sql = "insert into userinfo(name,password) values(%s,%s)"
res = cursor.executemany(sql,[("alex111","123"),("alex222","123"),("alex333",123)])
print(res)
conn.commit() #修改
sql = "update userinfo set password=%s where name=%s;"
res = cursor.execute(sql,["666","summer1"])
print(res)
conn.commit() #删除
sql = "delete from userinfo where name=%s"
res = cursor.execute(sql,["summer3",])
print(res)
conn.commit() #查询
sql = "select * from userinfo;"
res = cursor.execute(sql) ret = cursor.fetchone() #获取查询的第一条信息
ret = cursor.fetchmany(3) #获取查询的指定条数的信息
ret = cursor.fetchall() #获取查询的所有性信息
print(ret)
cursor.scroll(0,mode="absolute") #移动光标 绝对移动
cursor.scroll(1,mode="relative") #相对移动
ret = cursor.fetchall()
print(ret)

数据回滚与查看刚提交数据的id

在插入或者修改数据失败的时候回滚

import pymysql

conn = pymysql.connect(host='localhost',port=3306,user='root',password='123456',database='db3',charset='utf8')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) sql = "insert into userinfo(name,password) values(%s,%s)"
try:
# 执行SQL语句
res = cursor.execute(sql,["rain222","1234"])
# 提交事务
conn.commit()
# 提交之后,获取刚插入的数据的ID
last_id = cursor.lastrowid
except Exception as e:
# 有异常,回滚事务
conn.rollback()
cursor.close()
conn.close()

pymsql的简单实用方法的更多相关文章

  1. bootstrapValidator.js,最好用的bootstrap表单验证插件 简单实用方法

    实用方法 1.引入 在有jquery和bootstrap的页面里引入bootstrapValidator.js和bootstrapValidator.css文件 2. 按照bootstrap的表单组件 ...

  2. Java 简单实用方法二

    整理以前的笔记,在学习Java时候,经常会用到一些方法.虽然简单但是经常使用.因此做成笔记,方便以后查阅 这篇博文先说明构造和使用这些方法. 1,判断String类型数据是否包含中文 可以通过正则表达 ...

  3. 关于Android对话框简单实用方法总结

    要显示一个对话框,首先需要在xx.xml下添加一个Button按钮,并添加一个对应id. 单次点击事件对话框: button.setOnClickListener(new View.OnClickLi ...

  4. Swiper的简单实用方法

    最近项目中有用到一个非常强大的组件idangerous.swiper.js的组件,这个组件能够实现幻灯片的播放效果,而且有各种3D效果,大家可以去试一下,效果很不错的说! 这是这个项目的api文档:h ...

  5. 浅谈vuex使用方法(vuex简单实用方法)

    Vuex 是什么? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.Vuex 也集成到 Vu ...

  6. vuex的module的简单实用方法

    当我们的项目越来越大的时候,我们就开始使用vuex来管理我们的项目的状态.但是如果vuex的状态多了呢,这个时候module就登场了.看了一下官方的文档,很详细,但是没有demo让初学者很头疼.那我就 ...

  7. NProgress.js加载进度插件的简单实用方法

    NProgress.js 说明: NProgress是基于jquery的,且版本要 >1.8 下载地址: https://github.com/rstacruz/nprogress API: N ...

  8. WPF简单实用方法(持续更新)

    1:点击退出提示框 MessageBoxResult result = MessageBox.Show("你真的要退出吗?", "", MessageBoxBu ...

  9. php压力测试工具简单实用方法

    命令 ab -h 指令帮助 ab -n100 -c10 http://www.baidu.com 发起100个请求 并发数为10 设置测试地址是百度,注意测试测试时候请求数和并发数尽量设置低一点 Re ...

随机推荐

  1. 学生选课数据库SQL语句练习题

    一.            设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...

  2. Big Water Problem

    链接:https://www.nowcoder.com/acm/contest/77/B来源:牛客网 Big Water Problem 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ ...

  3. Java-Runoob:Java Character 类

    ylbtech-Java-Runoob:Java Character 类 1.返回顶部 1. Java Character 类 Character 类用于对单个字符进行操作. Character 类在 ...

  4. php 数组去重 (一维数组与二维数组)

    数组中重复项的去除 一维数组的重复项: 使用array_unique函数即可,使用实例如下: <?php                   $aa=array("apple" ...

  5. 监控服务器所有用户的操作记录(测试只记录root用户)

    在linux系统的环境下,不管是root用户还是其它的用户只有登陆系统后用进入操作我们都可以通过命令history来查看历史记录,可是假如一台服务器多人登陆,一天因为某人误操作了删除了重要的数据.这时 ...

  6. IntelliJ Idea使用scalatest

    背景:作为测试,开发写什么,测试自然就要测什么了,so = = 无scala基础,人较笨,折腾了两天才把环境弄好,如下: 一 IntelliJ Idea下载安装 这个真心是最简单的了 https:// ...

  7. Flask之视图(二)

    2.2 扩展 上下文:相当于一个容器,保存了Flask程序运行过程中的一些信息. Flask中有两种上下文,请求上下文和应用上下文. 请求上下文(request context) request和se ...

  8. Django学习---Web框架及基础知识

    Django学习---Web框架 web框架的本质 我们在学socket,我们创建一个socketserver,然后运行起来,有一个client客户端要连接socket服务端,连接上之后,如果两边都没 ...

  9. C++函数及参数

    传值->传递的是数据副本(结构.普通数据类型数据) 传地址->传递的是数据变量的地址(数组等) 传值的缺点是需要复制数据副本,数据量大可能增加内存需求,降低系统运行速度; 传地址也有传地址 ...

  10. URLDownloadToFileW

    [ilink32 Error] Error: Unresolved external 'URLDownloadToFileW' referenced from D:\USERS\PUBLIC\DOCU ...