1.   版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖。如要转贴,必须注明原文网址
  2.  
  3.   http://www.cnblogs.com/Colin-Cai/p/7643047.html
  4.  
  5.   作者:窗户
  6.  
  7.   QQ6679072
  8.  
  9.   E-mail6679072@qq.com

  python可以使用MYSQLdb来操作数据库。

  我们先来建数据库,其SQL语句如下:

  1. -- http://www.cnblogs.com/Colin-Cai
  2.  
  3. -- 数据库名称为test
  4. create database test;
  5. use test;
  6.  
  7. -- 生成表t
  8. create table t ( a int, b int);
  9. -- 插入数据
  10. start transaction;
  11. insert into t(a,b) values (1,1000);
  12. insert into t(a,b) values (1,2000);
  13. insert into t(a,b) values (1,3000);
  14. insert into t(a,b) values (2,1000);
  15. insert into t(a,b) values (2,2000);
  16. insert into t(a,b) values (2,3000);
  17. insert into t(a,b) values (3,1000);
  18. insert into t(a,b) values (3,2000);
  19. insert into t(a,b) values (3,3000);
  20. commit work;
  21.  
  22. -- 一个插入的存储过程myinsert
    -- 一个返回两个结果集的存储过程myproc
  23. delimiter //
    create procedure myinsert(in a_in int, in b_in int)
    begin
    insert into t(a,b) values(a_in, b_in);
    end
    //
  24. create procedure myproc(in a_max int, in b_max int)
  25. begin
  26. select a,b from t where a <= a_max;
  27. select a,b from t where b <= b_max;
  28. end
  29. //
  30. delimiter ;

   python操作数据库代码如下:

  1. #!/usr/bin/python
  2. import MySQLdb
  3.  
  4. db = MySQLdb.Connect(host='localhost', user='root', passwd='', db='test')
  5.  
  6. cursor = db.cursor()
  7. sql = 'call myproc(4,2000)'
  8. #sql = 'select a,b from t'
  9. #sql = 'insert into t(a,b) values(100,10000)';
  10. print sql
  11. try:
  12. cursor.execute(sql)
  13. seq = 1
  14. while 1:
  15. if seq > 1:
  16. cursor.nextset()
  17. results = cursor.fetchall()
  18. if results:
  19. print "No.%d" % (seq)
  20. seq = seq + 1
  21. for row in results:
  22. print "%s %s" % (row[0],row[1])
  23. else:
  24. break
  25. except:
  26. print "Wrong"
  27.  
  28. print "OK"
  29. db.close()

  以上代码对于有无结果集,有多个结果集(存储过程)的SQL语句都是可以使用的。如果没有结果集,当然不需要cursor,自然也查不出结果集。

  cursor.nextset()用于遍历下一个结果集,此用于多结果集的存储过程。

  最终关闭打开的数据库。

  运行一下

  1. $ ./test_mysql.py
  2. call myproc(4,2000)
  3. No.1
  4. 1 1000
  5. 1 2000
  6. 1 3000
  7. 2 1000
  8. 2 2000
  9. 2 3000
  10. 3 1000
  11. 3 2000
  12. 3 3000
  13. No.2
  14. 1 1000
  15. 1 2000
  16. 2 1000
  17. 2 2000
  18. 3 1000
  19. 3 2000
  20. OK

  

使用python操作mysql的更多相关文章

  1. Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy

    本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...

  2. 练习:python 操作Mysql 实现登录验证 用户权限管理

    python 操作Mysql 实现登录验证 用户权限管理

  3. Python操作MySQL

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

  4. Python操作Mysql之基本操作

    pymysql python操作mysql依赖pymysql这个模块 下载安装 pip3 install pymysql 操作mysql python操作mysql的时候,是通过”游标”来进行操作的. ...

  5. python成长之路【第十三篇】:Python操作MySQL之pymysql

    对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎 ...

  6. python操作mysql数据库的相关操作实例

    python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...

  7. Python 操作 MySQL 之 pysql 与 ORM(转载)

    本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...

  8. Python开发【第十九篇】:Python操作MySQL

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

  9. Python操作Mysql实例代码教程在线版(查询手册)

    本文介绍了Python操作MYSQL.执行SQL语句.获取结果集.遍历结果集.取得某个字段.获取表字段名.将图片插入数据库.执行事务等各种代码实例和详细介绍,代码居多,是一桌丰盛唯美的代码大餐   实 ...

  10. Python操作MySQL以及中文乱码的问题

    Python操作MySQL需要安装Python-MySQL可以从网上搜索一下,和一般的Python包一样安装 安装好之后,模块名字叫做MySQLdb ,在Window和Linux环境下都可以使用,试验 ...

随机推荐

  1. vue2

    props 向子组件传递数据是经常会用到的,一般是在子组件定义 props 来接受数据,当父组件改变数据时子组件的数据也会进行更新.但这里是有一个坑的,先看代码: <pagination :pa ...

  2. 自制tunnel口建虚拟专网实验

    R1: interface Tunnel12 ip address 192.168.12.1 255.255.255.0 ip ospf 1 area 0 tunnel source 123.123. ...

  3. 【Java线程】Java内存模型总结

    学习资料:http://www.infoq.com/cn/articles/Java-memory-model-1 Java的并发采用的是共享内存模型(而非消息传递模型),线程之间共享程序的公共状态, ...

  4. About Cheating and Plagiarism

    我先描述一下此次事件的具体经过.昨天3月15号的晚上十点,是第四次作业的deadline.在15号之前,只有五位同学提交了作业,而在临近deadline的这几个小时内密密麻麻地提交了二十多份作业.和第 ...

  5. 第四次作业 四则运算器在C++层面上的进一步思考

    OOA(Object Oriented Analysis,面向对象分析) 从客观存在的事务和事务之间的关系,归纳出有关对象(包括对象的属性和行为)以及对象之间的联系,并将具有相同属性和行为的对象用一个 ...

  6. Alpha 版本测试和发布说明

    Alpha版本测试报告 一bug汇总 做题时答案是错的.(已修复) 每次生成的题目一样(已经修复) 计时没有显示即倒计时,难度不同的功能没有实现(打算修复) 没有导入试卷和错题功能(不打算修复) 二. ...

  7. 201521123037 《Java程序设计》第10周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 创建自己的异常 1.自定义异常要继承已有的异常,需要手动throw异常:根据继承的异常不同以及具体情况,选择 ...

  8. 201521123069 《Java程序设计》 第12周学习总结

    1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2.书面作业 Q1.将Student对象(属性:int id, String name,int age,doub ...

  9. 《JAVA程序设计》第14周学习总结

    1. 本章学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自 ...

  10. 201521123038 《Java程序设计》 第十四周学习总结

    201521123038 <Java程序设计> 第十四周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 接口: DriverManager ...