一、pymysql安装

安装mymysql前请确认python环境已经准备好,在之前的博文http://www.cnblogs.com/newzol/p/8682176.html有说明pythonweb环境的安装,如果已经具备了,那么在安装pymysql就变的简单了.只要做如下处理:
tar -zxvf PyMySQL-0.7.11.tar.gz
cd PyMySQL-0.7.11
python setup.py install
二、验证安装是否成功
python
>>import pymysql
没有报错就好
三、Pymysql的使用
1、查询操做
sql="select down_task_id,stock_code,list_date from down_task where down_type=1 and task_status=1"
conn = pymysql.connect(host=MYSQL_IP,port=MYSQL_PORT,user=MYSQL_USER,passwd=MYSQL_PWD,db=MYSQL_DATABASE,charset=MYSQL_ENCODE)
cur = conn.cursor()
cur.execute(sql)
for r in cur:
mydata=downtask(r[0],r[1],r[2])
task_dict[mydata.down_task_id]=mydata
update_task(mydata.down_task_id,2)
conn.close()

pymysql也提供了很多取数据的方法,比如:

  • 取一行数据:row=cur.fetchone()
  • 取所有返回的记录row = cur.fetchall()
  • 取几行记录:row = cur.fetchmany(n) #n是返回的记录数

2、更新数据

sql="update down_task set task_status=%d,complate_date=now() where down_task_id=%d"
conn = pymysql.connect(host=MYSQL_IP,port=MYSQL_PORT,user=MYSQL_USER,passwd=MYSQL_PWD,db=MYSQL_DATABASE,charset=MYSQL_ENCODE)
try:
cur = conn.cursor()
time = datetime.datetime.now()
time_str = datetime.datetime.strftime(time,'%Y-%m-%d%H:%M:%S')
cur.execute(sql % (status,down_task_id))
conn.commit()
conn.close()
except:
print '##################update task compate failed,rollback###############'
conn.rollback()
conn.close()
return False

更新时记得要提交.只有在语句执行后做了提交操作,才会真正的将结果更新到数据表中.更新脚本中有时间字段时,特别是更新当前系统时间,直接用now()就好.

3、插入操作
sql="insert down_task(stock_code, down_type,task_status,complate_date,create_date,list_date) values(%s,2,1,now(),now(),%d)"
conn = pymysql.connect(host=MYSQL_IP,port=MYSQL_PORT,user=MYSQL_USER,passwd=MYSQL_PWD,db=MYSQL_DATABASE,charset=MYSQL_ENCODE)
try:
cur = conn.cursor()
cur.execute(sql % ("'"+stock_code+"'",list_date))
conn.commit()
conn.close()
except:
print '##################update task compate failed,rollback###############'
conn.rollback()
conn.close()
return False

插入操作时有两点需要注意:

1、表中有自增主键,
有两种处理方法:A:按照上面的处理,自增的字段不要写在sql中,后面绑定参数时也不用自己绑定,所有的操作数据库完成.
B:先获取自增主键的ID,获取方法是:cur.自增主键字段,然后在sql中显示绑定,sql中要带上自增主键字段
2、插入的字符串前有0时,如果不做处理,插入到表中的记录会将字符串前面的0舍去,在实际绑定值时,在绑定变量前后加上单引号既可,如:"'"+stock_code+"'"
4、批量绑定

实际使用过程中,单条操作往往比较慢,需要使用批量绑定,即在插入数据库时对绑定参数进行批量绑定,示例如下:
sql="insert down_task(stock_code, down_type,task_status,complate_date,create_date,list_date) values('002332',2,1,now(),now(),2010),('002332',2,1,now(),now(),2010)"
conn = pymysql.connect(host=MYSQL_IP,port=MYSQL_PORT,user=MYSQL_USER,passwd=MYSQL_PWD,db=MYSQL_DATABASE,charset=MYSQL_ENCODE)
try:
cur = conn.cursor()
cur.execute(sql)
conn.commit()
conn.close()
except:
print '##################insert task compate failed,rollback###############'
conn.rollback()
conn.close()
return False

5、删除操作

delsql = "delete from down_task where stock_code=%s"
conn = pymysql.connect(host=MYSQL_IP,port=MYSQL_PORT,user=MYSQL_USER,passwd=MYSQL_PWD,db=MYSQL_DATABASE,charset=MYSQL_ENCODE)
try:
cur = conn.cursor()
cur.execute(delsql % ("'"+''+"'"))
conn.commit()
conn.close()
except:
print '##################insert task compate failed,rollback###############'
conn.rollback()
conn.close()
return False

6、调用无参数存储过程

conn = pymysql.connect(host=MYSQL_IP,port=MYSQL_PORT,user=MYSQL_USER,passwd=MYSQL_PWD,db=MYSQL_DATABASE,charset=MYSQL_ENCODE)
#游标设置为字典类型
cursor = conn.cursor()
#无参数存储过程
cursor.callproc('p2') #等价于cursor.execute("call p2()")
row_1 = cursor.fetchone()
print row_1
conn.commit()
cursor.close()
conn.close()

7、调用有参数存储过程

conn = pymysql.connect(host=MYSQL_IP,port=MYSQL_PORT,user=MYSQL_USER,passwd=MYSQL_PWD,db=MYSQL_DATABASE,charset=MYSQL_ENCODE)
cursor = conn.cursor()
cursor.callproc('p1', args=(1, 22, 3, 4))
#获取执行完存储的参数,参数@开头
cursor.execute("select @p1,@_p1_1,@_p1_2,@_p1_3") #{u'@_p1_1': 22, u'@p1': None, u'@_p1_2': 103, u'@_p1_3': 24}
row_1 = cursor.fetchone()
print row_1
conn.commit()
cursor.close()
conn.close()

四、总结

本文纸堆pymysql的常用使用方法和遇到过的坑进行总结,如有问题请大家批评指正.

pymysql安装和使用的更多相关文章

  1. pymysql安装

    安装python3之后 链接数据库需要安装pymysql pymysql 下载地址 https://pypi.python.org/pypi/PyMySQL3/0.5 ,下载之后传到linux虚拟机, ...

  2. 关于MySQL中pymysql安装的问题。

    一 一般情况下我们直接在终端输入: pip3 install pymysql 就能够自动安装成功. 但是有时候我们必须先指定一个python解释器: 比如我们指定python3 在终端cmd输入:py ...

  3. python pymysql安装

    ==================pymysql=================== 由于 MySQLdb 模块还不支持 Python3.x,所以 Python3.x 如果想连接MySQL需要安装 ...

  4. Python 之 PyMySQL 安装和使用

    Python具有内置的SQLite支持. 在本节中,我们将学习使用MySQL的相关概念和知识. 在早期Python版本一般都使用MySQLdb模块,但这个MySQL的流行接口与Python 3不兼容. ...

  5. centos7下pymysql安装

    1. 安装 添加mysql yum respository 添加 MySQL Yum Repository 到你的系统 repository 列表中,执行 wget http://repo.mysql ...

  6. mac多版本python安装 pymysql

    系统里面安装了多个python的版本,有2.7和3.4等.默认的2.7版本,但我开发需要3.4版本的. 默认情况下,用pip安装PyMySQL $sudo pip install PyMySQL 安装 ...

  7. python 下安装pymysql数据库

    两种方法来安装pymysql 方法一.利用命令来安装 安装:python37 -m pip install pymysql 升级:python37 -m pip install pymysql --u ...

  8. scrapy 和 scrapy_redis 安装

    安装sqlslte,scrapy需要这个模块 yum install sqlite-devel python3.5 下载包自己编译安装 ./configure make make install 自带 ...

  9. python 3.5.2安装mysql驱动报错

    python 3.5.2安装mysql驱动报错 python 3.5.2安装mysql驱动时出现如下异常: [root@localhost www]# pip install mysql-connec ...

随机推荐

  1. 初步谈谈 C# 多线程、异步编程与并发服务器

    多线程与异步编程可以达到避免调用线程异步阻塞作用,但是两者还是有点不同. 多线程与异步编程的异同: 1.线程是cpu 调度资源和分配的基本单位,本质上是进程中的一段并发执行的代码. 2.线程编程的思维 ...

  2. redis笔记总结之redis安装

    二.Redis安装 2.1 Redis下载 官网地址:http://redis.io/ 下载地址:http://download.redis.io/releases/redis-3.0.0.tar.g ...

  3. Java基于自定义注解的面向切面的实现

    目的:实现在任何想要切的地方添加一个注解就能实现面向切面编程 自定义注解类 @Target({ElementType.PARAMETER, ElementType.METHOD}) @Retentio ...

  4. Throwable.异常

    异常: 在运行期间发生的不正常情况. 在JAVA中用类的形式对异常的情况进行了类的封装. 这些描述不正常情况的类就称为异常类. 异常类就是java通过面向对象的思想将问题封装成了对象.用异常类对问题进 ...

  5. EOS 的世界里可能再也没有小偷了

    EOS 针对以下两种情况设计了应急措施: 1. 账户被盗(私钥被盗或有权限的其他账户被盗) 2. 账户遗失(私钥遗失或有权限的其他账户遗失) ## 1.账户被盗 EOS 有可能会强制要求所有账户的 O ...

  6. PHP实现KMP算法

    KMP算法是一种比较高效的字符串匹配算法,关于其讲解,可参考文章 字符串匹配的KMP算法,本文只给出具体的PHP代码实现. /** * @desc构建next数组 * @param string $s ...

  7. 背景新增属性和css渐变及倒影

    背景新增属性和css渐变及倒影 一.background新增属性 background-size:指定对象的背景图像的尺寸大小. background:url() 0 0,url() 0 100%;多 ...

  8. Python 中 mySQL 中的语句

    class DeleteInventorybusiness(BaseBusiness): def DeleteInventory(self,Delete_goodsID): DeleteInvento ...

  9. MYSQL数据库学习十六 安全性机制

    16.1 MYSQL数据库所提供的权限 16.1.1 系统表 mysql.user 1. 用户字段 Host:主机名: User:用户名: Password:密码. 2. 权限字段 以“_priv”字 ...

  10. linux --> VIM的列编辑操作

    VIM的列编辑操作   一.删除列 1.光标定位到要操作的地方. 2.CTRL+v 进入“可视 块”模式,选取这一列操作多少行. 3.d 删除.   二.插入列 插入操作的话知识稍有区别.例如在每一行 ...