python中pymsql常用方法(1)
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)的更多相关文章
- python中os常用方法
		python中OS常用方法 Python的标准库中的os模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.即它允许一个程序在编写后不需要任何改动,也不会发生任何问 ... 
- Python中字符串常用方法
		capitalize() String.capitalize() 将字符串首字母变为大写 name = 'xiaoming' new_name = name.capitalize() print(ne ... 
- python中的常用方法
		1.os模块的常用方法: >>> import os >>> >>> myFiles = ['accounts.txt', 'details.cs ... 
- python中datetime常用方法
		# 可运算的时间方法包 >>> import datetime >>> import time >>> res = datetime.dateti ... 
- python中os的常用方法
		1.os模块:os模块在python中包含普遍的操作系统功能,下面列出了一些在os模块中比较有用的部分. os.sep可以取代操作系统特定的路径分隔符.windows下为 “\\” os.name字符 ... 
- python中os模块的常用方法
		1.os模块:os模块在python中包含普遍的操作系统功能,下面列出了一些在os模块中比较有用的部分. os.sep可以取代操作系统特定的路径分隔符.windows下为 “\\” os.name字符 ... 
- python中使用正则表达式处理文本(仅记录常用方法和参数)
		标准库模块 python中通过re模块使用正则表达式 import re 常用方法 生成正则表达式对象 compile(pattern[,flags]) pattern:正则表达式字符串 flags: ... 
- python中calendar模块的常用方法
		>>> import calendar >>> calendar.isleap(2000) #判断是否是闰年 True >>> calendar. ... 
- python 中os的常用方法
		1.更改当前的路径 import os os.chdir( "D:/java") 注意python中表示文件路径,文件夹之间用/或者\\不能使用\ 
随机推荐
- sparksql基础知识二
			目标 掌握sparksql操作jdbc数据源 掌握sparksql保存数据操作 掌握sparksql整合hive 要点 1. jdbc数据源 spark sql可以通过 JDBC 从关系型数据库中读取 ... 
- c博客作业-数组
			0. 1.本章学习总结 1.1学习内容总结 1.1.1一维数组 1.一般定义形式:类型名 数组名 [数组长度];类型名指定数组中每个元素的类型,数组名是数组变量的名称,是一个合法的标识符,数组长度是一 ... 
- 使用PostMan进行压力/性能测试
			1. 2. 3. 4.查看结果/导出结果 
- App3种开发方式的优劣分析:原生、混合和H5
			App混合开发(英文名:Hybrid App),是指在开发一款App产品的时候为了提高效率.节省成本即利用了原生的开发技术还应用了HTML5开发技术,是原生和HTML5技术的混合应用.目前App的开发 ... 
- 每日一问:不一样的角度吐槽下 DataBinding
			我们项目采用的是 kotlin && DataBinding 处理的,可能你会疑问,既然用的是 kotlin,为啥没有用 kotlinx?新的页面当然是用的 kotlinx 啦,但我们 ... 
- spark 调优(官方文档)
			1.序列化 对象在进行网络传输或进行持久化时需要进行序列化,如果采用序列化慢或者消耗大量字节的序列化格式,则会拖慢计算. spark 提供了两种序列化类库 1). Java serialization ... 
- ElasticSearch 线程池类型分析之SizeBlockingQueue
			ElasticSearch 线程池类型分析之SizeBlockingQueue 尽管前面写好几篇ES线程池分析的文章(见文末参考链接),但都不太满意.但从ES的线程池中了解到了不少JAVA线程池的使用 ... 
- Java学习:final关键字的使用与注意事项
			final 关键字代表最终.不可改变的. 常见的四种用法 可以用来修饰一个类 可以用来修饰一个方法 可以用来修饰一个局部变量 可以用来修饰一个成员变量 1.当final关键字用来修饰一个类的时候,格式 ... 
- Dapper安装与使用
			1.VS2015直接使用nuget包搜索Dapper,安装时报错:显示版本不兼容. 于是使用命令安装dapper低版本. 步骤: 打开项目,vs工具---Nuget包管理器--程序包管理器控制台 ... 
- python函数对变量的作用及遵循的原则
			1.全局变量和局部变量 全局变量:指在函数之外定义的变量,一般没有缩进,在程序执行的全过程有效 局部变量:指在函数内部使用的变量,仅在函数内部有效,当函数退出时变量将不存在 例如: n=1 #n是全局 ... 
