python之路-----pymysql

一.pymysql 基础

  安装命令:pip3 install pymysql -i https://pypi.douban.com/simple

二.pymysql命令

 1.链接数据库

conn = pymysql.connect(host=‘127.0.0.1‘, port=3306, user=‘school_spt‘, passwd=‘123456‘, db=‘school_info‘)   #返回个链接对象

 2.创建游标

cursor = conn.cursor()

 3.sql拼接命令

1.字符串拼接(不推荐使用该方式,容易被sql注入)
user=‘root‘
pwd=‘123456‘
sql=‘select * from userinfo where password=%s and username=%s‘%(pwd,user)

2.pymysql命令自带拼接
executsql命令, args)    #args可以是列表,元组或者字典

列表:

user=‘root‘
pwd=‘123456‘
sql=‘select * from userinfo where password=%s and username=%s‘
cursor.execute(sql,[pwd,user])
元组
user=‘root‘
pwd=‘123456‘
sql=‘select * from userinfo where password=%s and username=%s‘
cursor.execute(sql,(pwd,user)) 

字典
sql=‘select * from userinfo where password=%(password)s and username=%(username)s‘
cursor.execute(sql,({‘password‘:pwd,‘username‘:user}))

  4.查

sql=‘select * from userinfo‘
res=cursor.execute(sql)   #返回受影响的行数
#获取返回的数据
cursor.fetchone()      #获取返回的第一行内容
cursor.fetchmany(n)    #获取返回的前n行内容
cursor.fetchall()          #获取返回的全部内容

#返回的数据默认是元组形式,如果要以字典形式显示
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

  5.改(改,删,增)

1.增
    sql=‘insert into userinfo(username,password) values(%s,%s)’
    cursor.execute(sql,(‘root‘,‘123‘));   #单条插入
    也可以使用批量插入数据
    cursor.executemany(sql,[(‘root‘,‘123‘),(‘root1‘,‘1234‘),(‘root2‘,‘123‘)]);
2.改,删没有批量执行命令,批量一般都使用单条执行
3.增,删,改操作后,都需要使用 conn.commit()来确认提交数据

  6.execute会返回受影响的行数。一般不适用

  7.scroll

  在fetch数据时按照顺序进行(类似生成器),可以使用cursor.scroll(num,mode)来移动游标位置,如:

  • cursor.scroll(1,mode=‘relative‘)  # 相对当前位置移动
  • cursor.scroll(2,mode=‘absolute‘) # 相对绝对位置移动

  8.获取最后的自增id值(lastrowid)

id=cursor.lastrowid

  9.关闭游标和链接

cursor.close()  #先关闭游标
conn.close()    #再关闭连接 

 

时间: 2024-08-13 16:08:33

python之路-----pymysql的相关文章

Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. Memc

Python之路【第十六篇】:Django【基础篇】

Python之路[第十六篇]:Django[基础篇] Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. 基本配置 一.创建django程序 终端命令:django-admin startproject sitename IDE创建Django程序时,本质上都是自动执行上述命令 其他常用命令: python manage.py runserver

Python之路_Day12

Python之路_Day12_课堂笔记 上节回顾 一.线程 线程 基本线程使用 队列-消息队列 线程池 进程 基本使用 进程数据共享 进程池 协程 更适用IO操作 二.Memcache.Redis Memcache 集群: (C1,1) (C2,2) (C3,1) [C1,C2,C2,C3] gets/cas Redis 一. 默认支持连接池 支持事务 发布和订阅 二.Redis基本操作 三.自定义 Redis列表类型 默认全部取 根据索引取值 本节预告 一.线程池 二.redis,发布订阅 三

Python之路_Day13

Python之路_Day13_课堂笔记 前期回顾 一.redis 发布订阅 二.rabbitMQ 原始队列 exchange ex全部转发 ex,关键字 ex,模糊匹配 rpc 三.MySQL 四.Python MySQL pymysql excute    执行单条语句,返回受影响的行数 excutemany    执行多条语句,返回受影响的行数 fetchone fetchall fetchmany scroll lastrowid 五.SQLAlchemy ORM框架 db first c

Python之路【第十七篇】:Django【进阶篇 】

Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 import MySQLdb def GetList(sql): db = MySQLdb.connect(user='root', db='wupeiqidb', passwd='1234', host='localhost')

七日Python之路--第十二天(Django Web 开发指南)

<Django Web 开发指南>.貌似使用Django1.0版本,基本内容差不多,细读无妨.地址:http://www.jb51.net/books/76079.html (一)第一部分 入门 (1)内置数字工厂函数 int(12.34)会创建一个新的值为12的整数对象,而float(12)则会返回12.0. (2)其他序列操作符 连接(+),复制(*),以及检查是否是成员(in, not in) '**'.join('**')   或  '***%s***%d' % (str, int)

七日Python之路--第九天

众所周知,代码这东西不是看出来的.程序这东西只哟一个标准. 下面找点开源的东西看看,学习一下大婶们的犀利编码...... 推荐一下: 虽然有点老了:http://www.iteye.com/topic/405150,还有就是GitHub上面搜索一下Django就能出来很多,当然还有OSChina.只是有个问题,就是Django版本不同,具体的内容可能会有些不同,但大概还是相同的.领略即可,然后书写自己的代码. 首要的还是官方文档. 看着还是有些难度的.偶然发现一个不错的Blog:http://w

Python之路【第三篇】:Python基础(二)

Python之路[第三篇]:Python基础(二) 内置函数 一 详细见python文档,猛击这里 文件操作 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 1 文件句柄 = file('文件路径', '模式') 注:python中打开文件有两种方式,即:open(...) 和  file(...) ,本质上前者在内部会调用后者来进行文件操作,推荐使用 open. 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作.

Python之路【第二篇】:Python基础(一)

Python之路[第二篇]:Python基础(一) 入门知识拾遗 一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 1 2 3 if 1==1:     name = 'wupeiqi' print  name 下面的结论对吗? 外层变量,可以被内层变量使用 内层变量,无法被外层变量使用 二.三元运算 1 result = 值1 if 条件 else 值2 如果条件为真:result = 值1如果条件为假:result = 值2 三.进制 二进制,01 八进