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. 博客索引and题目列表

    目录 笔记整理 计划 要学的东西 缺省源 要做的题 搜索 高斯消元 矩阵 排列组合 2019.7.9 2019.7.10 kmp ac自动机 2019.7.11 2019.7.15 笔记整理 1.同余 ...

  2. C++ 重写虚函数的代码使用注意点+全部知识点+全部例子实现

    h-------------------------- #ifndef VIRTUALFUNCTION_H #define VIRTUALFUNCTION_H /* * 派生类中覆盖虚函数的使用知识点 ...

  3. 【Gamma】“北航社团帮”发布说明——小程序v3.0

    目录 Gamma版本新功能 小程序v3.0新功能 新功能列表 新功能展示 这一版修复的缺陷 Gamma版本的已知问题和限制 小程序端 网页端 运行.安装与发布 运行环境的要求 安装与发布 小程序 网页 ...

  4. Redis GEO地理位置信息,查看附近的人

    在之前的一篇文章<SpringBoot入门教程(五)Java基于MySQL实现附近的人>,我们介绍了Java基于MySQL实现查找附近的人的功能.今天就来研究研究"查找附近的人& ...

  5. 创建新react项目 运行npm start 报错踩过的坑

    1.看react官网创建新的react项目 :npx create-react-app my-app    cd到my-app  npm start 遇见如下报错 这是因为电脑本地git的原因 ,不是 ...

  6. ZYNQ笔记(7):AXI从口自定义IP封装

    使用 AXI_Lite 从口实现寄存器列表的读写,并且自己封装为一个自定义 IP,以便以后使用.本次记录的是 M_AXI_GP0 接口,此接口是 ARM 作为主机,FPGA 作为从机,配置 FPGA ...

  7. Hive sampling 语法之TABLESAMPLE用法理解

    官网关于LanguageManual Sampling的教程,部分截图如下,这里主要分享对TABLESAMPLE(BUCKET 3 OUT OF 16 ON id)子句的理解 ​ 官网中假设创建表时设 ...

  8. vue nexttick的理解和使用场景

    应用场景 需要在视图更新之后,基于新的视图进行操作 文档说明 在下次 DOM 更新循环结束之后执行延迟回调.在修改数据之后立即使用这个方法,获取更新后的 DOM nextTick原理 1.异步说明 V ...

  9. 整理:WPF中Binding的几种写法

    原文:整理:WPF中Binding的几种写法 目的:整理WPF中Bind的写法 <!--绑定到DataContext--> <Button Content="{Bindin ...

  10. C#文件操作之把一个文件复制到另外一个文件夹下

    一.文件复制例子如下,具体情况,根据需求扩展. /// <summary> /// /// </summary> /// <param name="srcFol ...