python中pymysql模块常用方法以及其使用

首先我们知道pymysql 是python中操作数据库的模块

使用步骤分为如下几步:

​ 1.与数据库服务器建立链接 conn=pymysql.Connect(....)

​ 2.获取游标对象(用于发送和接受数据)cursor=conn.cursor()

​ 3.使用游标执行sql语句cursor.excute(sql)-->此时返回的是执行该语句后数据库表中受影响的数据条数

​ 4.使用fetch方法来获取执行的结果

​ 5.关闭连接:先关闭游标,再关闭连接

id caption
1 三年级二班
2 三年级三班
3 一年级二班
4 二年级九班

简单使用之数据库读取

import pymysql

conn = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='root',
database='day41',
charset='utf8'
)
cursor = conn.cursor(pymysql.cursors.DictCursor) # 将查询结果做成字典格式
res = cursor.execute('select * from class') # 返回的值是受影响数据的条数
print(res) # 查询到的数据总条数
print(cursor.fetchone()) # 获取一条查询结果 # cursor.scroll(1, 'absolute') # 绝对移动:相对于文件起始位置,向后移动一组数据
# cursor.scroll(1,'relative') # 相对移动,相对于当前位置,向后移动一个位置
cursor.scroll(-1) # 游标 相对移动到当前位置的前一条数据位置
# 获取所有剩余的内容查询的内容的字典 --》类似于文件读写的游标
print(cursor.fetchall()) # [{'cid': 2, 'caption': '三年三班'}, {'cid': 3, 'caption': '一年二班'}, {'cid': 4, 'caption': '二年九班'}]
cursor.close() # 关闭游标
conn.close() # 关闭连接

简单使用之数据库的增改删操作

​ 上面所示的是我们在python中pymysql的最简单的用法,在实际中,我们在对数据库的读取操作的时候,是不需要进行commit提交处理的,但是在对表的增和改操作的时候,数据库默认是启用事务的,sql语句如果没有提交相当于没有执行。

id name password money
1 qzk 123 1000
2 qby 123 1000
3 qwe 123 1000
4 zdc 123 1000
5 qqq 123 1000
# -*- coding: utf-8 -*-
import pymysql # Connect 类 实例化一个 conn连接对象
conn = pymysql.Connect(
host='127.0.0.1',
user='root',
port=3306,
password='root',
database='day41',
charset='utf8'
)
# 获取游标对象
cursor = conn.cursor(pymysql.cursors.DictCursor)
# 这里演示一下 rollback()作用:当有两个或多个操作因其他原因只完成部分操作而未能执行完全部操作导致的数据不安全问题,可以对表数据中的增改进行撤销处理。
try:
res1 = cursor.execute("update userinfo set money = money-50 where name= 'qqq'")
print(cursor.fetchall())
res = cursor.execute("update userinfo set money =money-50 where name= 'ewr'")
if not res: # 该处演示当 res 返回值为0时,表示该操作未对数据库产生影响,因为ewr不在数据库中,所以返回0,此事上一句操作 res1 已操作完毕,用户账户余额已减去50 ,故,需要撤销上面的操作,所以用 rollback()
print('转账失败')
conn.rollback()
except:
conn.rollback()
cursor.execute("select * from userinfo") # 执行语句查看数据库的userinfo所有字段信息,返回收影响的数据条数
print(cursor.fetchall()) # 查看到上面语句执行的结果
# 提交修改 因为pymysql模式默认是启用事务的,sql语句如果没提交相当于没执行
conn.commit() # 提交事务 """
注意:pymysql 默认不提交修改的,但是这里指的是对表中的记录操作不提交,像诸如删库、删表的操作时无法撤销的
"""

链接数据库的用户登录简单实现

# -*- coding: utf-8 -*-
import pymysql # 创建连接得到一个连接对象
conn = pymysql.Connect(
host='127.0.0.1', # 数据库服务器主机地址
port=3306, # 端口号,可选
user='root', # 数据库用户名
password='root', # 数据库密码
database='day41', # 数据库名称
charset='utf8' # 编码
) while True:
name_inp = input('>>>username:').strip()
pwd_inp = input('>>>>pwd:').strip()
# 获取游标对象
cursor = conn.cursor(pymysql.cursors.DictCursor)
sql = 'select * from userinfo where name=%s and password=%s'
# cursor 执行sql
res = cursor.execute(sql, (name_inp, pwd_inp))
print(res)
# sql注入
if res:
print('登录成功')
print(cursor.fetchone()) # 查询一个
break
else:
print('登录失败,用户名或密码错误')
# 关闭游标
cursor.close()
# 关闭连接
conn.close()
"""
一般我们不要自己手动拼接(关键参数)查询条件(会导致sql注入)
"""

sql注入问题

# 不要手动去拼接查询的sql语句
username = input(">>>:").strip()
password = input(">>>:").strip()
sql = "select * from user where username='%s' and password='%s'"%(username,password) # 用户名正确
username >>>: jason' -- jjsakfjjdkjjkjs
# 用户名密码都不对的情况
username >>>: xxx' or 1=1 --asdjkdklqwjdjkjasdljad
password >>>: ''

增删改

# 增
sql = "insert into user(username,password) values(%s,%s)"
rows = cursor.excute(sql,('jason','123')) # 修改
sql = "update user set username='qzksdb' where id=1"
rows = cursor.excute(sql) """
增和改单单执行excute并不会真正影响到数据,需要再执行conn.commit()才可以完成真正的增改
""" # 一次插入多行记录
res = cursor,excutemany(sql,[(),(),()]

python中pymsql常用方法(1)的更多相关文章

  1. python中os常用方法

    python中OS常用方法 Python的标准库中的os模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.即它允许一个程序在编写后不需要任何改动,也不会发生任何问 ...

  2. Python中字符串常用方法

    capitalize() String.capitalize() 将字符串首字母变为大写 name = 'xiaoming' new_name = name.capitalize() print(ne ...

  3. python中的常用方法

    1.os模块的常用方法: >>> import os >>> >>> myFiles = ['accounts.txt', 'details.cs ...

  4. python中datetime常用方法

    # 可运算的时间方法包 >>> import datetime >>> import time >>> res = datetime.dateti ...

  5. python中os的常用方法

    1.os模块:os模块在python中包含普遍的操作系统功能,下面列出了一些在os模块中比较有用的部分. os.sep可以取代操作系统特定的路径分隔符.windows下为 “\\” os.name字符 ...

  6. python中os模块的常用方法

    1.os模块:os模块在python中包含普遍的操作系统功能,下面列出了一些在os模块中比较有用的部分. os.sep可以取代操作系统特定的路径分隔符.windows下为 “\\” os.name字符 ...

  7. python中使用正则表达式处理文本(仅记录常用方法和参数)

    标准库模块 python中通过re模块使用正则表达式 import re 常用方法 生成正则表达式对象 compile(pattern[,flags]) pattern:正则表达式字符串 flags: ...

  8. python中calendar模块的常用方法

    >>> import calendar >>> calendar.isleap(2000) #判断是否是闰年 True >>> calendar. ...

  9. python 中os的常用方法

    1.更改当前的路径 import os os.chdir( "D:/java") 注意python中表示文件路径,文件夹之间用/或者\\不能使用\

随机推荐

  1. luogu p2622关灯问题II

    luogu p2622关灯问题II 题目描述 现有n盏灯,以及m个按钮.每个按钮可以同时控制这n盏灯--按下了第i个按钮,对于所有的灯都有一个效果.按下i按钮对于第j盏灯,是下面3中效果之一:如果a[ ...

  2. 洛谷 P2023 [AHOI2009]维护序列 题解

    P2023 [AHOI2009]维护序列 题目描述 老师交给小可可一个维护数列的任务,现在小可可希望你来帮他完成. 有长为N的数列,不妨设为a1,a2,-,aN .有如下三种操作形式: (1)把数列中 ...

  3. 2019qbxtCSP-S2 模拟题1

    T1 \(solution\) 求出第一个开始下降的位置,移动到连续的与它相同的数的最前面的一个数的位置,记录为\(p\) \(p\)以前的位置的数与原数相同,\(p\)位置为原数-1,后面全部为9 ...

  4. Kdtree原理以及 vs Octree

    1. Kdtree原理 Kdtree是一种划分k维数据空间的数据结构,本质也是一颗二叉树,只不过每个节点的数据都是k维,当k=1时,就是图1所示的普通二叉树. 图1 1)Kdtree的建立 建立Kdt ...

  5. 关于“100g文件全是数组,取最大的100个数”解决方法汇总

    原题如下: 有一个100G大小的文件里存的全是数字,并且每个数字见用逗号隔开.现在在这一大堆数字中找出100个最大的数出来. 我认为,首先要摸清考官的意图.是想问你os方面的知识,还是算法,或者数据结 ...

  6. django开发_七牛云图片管理

    七牛云注册 https://www.qiniu.com/ 实名认证成功之后,赠送10G存储空间 复制粘贴AK和SK 创建存储空间,填写空间名称,选择存储区域.访问控制选择位公开空间 获取测试域名 七牛 ...

  7. Elasticsearch常见用法-入门

    前台启动 默认是只有本地可以访问 ./bin/elasticsearch 远程访问 修改elasticsearch.yml,把network.host(注意配置文件格式不是以 # 开头的要空一格, : ...

  8. 在配置和销售凭证 GET_CONFIG_MODE 间通信时内部出错

    “在配置和销售凭证 GET_CONFIG_MODE 间通信时内部出错” 订单打开出现这种错误提示,多半是配置对象号问题. SAP NOTE 2019-09-27 901893901893 - Repo ...

  9. C#读写修改设置调整UVC摄像头画面-缩放

    有时,我们需要在C#代码中对摄像头的缩放进行读和写,并立即生效.如何实现呢? 建立基于SharpCamera的项目 首先,请根据之前的一篇博文 点击这里 中的说明,建立基于SharpCamera的摄像 ...

  10. ansible超详细使用指南

    在工作中有用到ansible用于自动部署和环境配置,这里整理了一份很详尽的使用指南,如果有用到的可以看看.关于使用ansible自动部署一个网站和docker化,将在下一篇文章中介绍,敬请期待.文章内 ...