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

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. jq 合并json对象

    一,保存object1和2合并后产生新对象,若2中有与1相同的key,默认2将会覆盖1的值 1 var object = $.extend({}, object1, object2); 二,将2的值合 ...

  2. Android中preference标签的使用

    现在做公司任务的时候,经常会要去读Settings的源码,然后发现在xml文件中几乎全是用的preferenceScreen和preferenceCategory标签,很少有用布局和控件的,然后我就自 ...

  3. css移除a标签及map、area(图片热区映射)点击过后的边框

    默认a标签及其包含的html元素和map中的area(图片热区映射)在点击过后留有默认的蓝色边框,如下图 可以看到,蓝色的边框破坏了页面的整体美感,很多时候我们都是不需要的.通过设置相应的css可以去 ...

  4. mysql 实现row_number,获取上一条,下一条

    代码思路如下: select *,(@row_num:=@row_num+1) as row_no  from stc_output,(select(@row_num:=0)) b; select * ...

  5. java软件设计模式——单例设计模式中的【饿汉式】与 【懒汉式】示例

    以下为单例设计模式中的两种经典模式的代码示意: 单例设计模式(spring框架IOC,默认创建的对象都是单例的): 饿汉式: public class SingleClass { private Si ...

  6. 关于i++的解释

    根据 JavaScript Language Specification 的定义, 表达式 A=B的执行步骤,简单地说,就是:1. 对等号左边的表达式 A 进行计算,算出最终的结果,必须是参照或变量: ...

  7. 字体相关CSS属性介绍

    font-family 字体系列. font-family可以把多个字体名称作为一个“回退”系统来保存.如果浏览器不支持第一个字体,则会尝试下一个.浏览器会使用它可识别的第一个值. 简单实例: bod ...

  8. JasperReport报表导出踩坑实录

    写在最前面 翻了翻博客,因为太忙,已经好久没认真总结过了. 正好趁着今天老婆出门团建的机会,记录下最近这段时间遇到的大坑-JasperReport. 六月份的时候写过一篇利用poi文件导入导出的小De ...

  9. jQuery样式与动画

    修改内联CSS .css() 获取 //取得单个属性的值,传入'属性名',返回"value" .css('property') //取得多个属性的值,传入'['属性1','属性2' ...

  10. HTML5 File API解读

    1,概述 Web应用应该具备处理广泛用户输入问题的能力,例如在Web富应用中,用户希望上传文件到服务器.File API定义了访问文件的基本操作途径,包括文件.文件列表集.错误处理等,同时,File ...