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

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. java代码------------条件运算符 ?:

    总结: package com.sads; //?: //这个运算符是条件运算符 //条件式?值:值 public class Sd { public static void main(String[ ...

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

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

  3. [Java]一步一步学 Web

    部分内容来自:http://www.cnblogs.com/jinzhenshui/p/3345895.html Java 中的锁写作 synchronized (this) {} .net 中的锁写 ...

  4. (转) docker跨主机 macvlan 网络配置

    原文链接 https://github.com/alfredhuang211/study-docker-doc/blob/master/docker%E8%B7%A8%E4%B8%BB%E6%9C%B ...

  5. 【UVa】208 Firetruck(dfs)

    题目 题目     分析 一开始不信lrj的话,没判联通,果然T了. 没必要全部跑一遍判,只需要判断一下有没有点与n联通,邻接表不太好判,但无向图可以转换成去判n与什么联通. 关于为什么要判,还是因为 ...

  6. quartz报错 Couldn't retrieve job because the BLOB couldn't be deserialized: null

    今天线上添加定时任务之后 定时任务查询页面报出如上错误, 原因有两点 1.org.quartz.jobStore.useProperties = true 这个属性的意思存储的JobDataMaps是 ...

  7. Tkinter简易教程

    支持python的常见GUI工具包: Tkinter 使用Tk平台 很容易得到 半标准 wxpython 基于wxWindows.跨平台越来越流行 Python Win 只能在Windows上使用 使 ...

  8. Tkinter Text(文本)

         Tkinter Text(文本): 文本小部件提供先进的功能,让您编辑多行文本格式,如改变其颜色和字体的方式显示.   文本小部件提供先进的功能,让您编辑多行文本格式,如改变其颜色和字体的方 ...

  9. 关于git的reset、checkout、revert

    https://www.atlassian.com/git/tutorials/resetting-checking-out-and-reverting/file-level-operations 最 ...

  10. Mysql EXPLAIN列的解释

    转自:http://blog.chinaunix.net/uid-540802-id-3419311.html explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择 ...