专栏首页窗户使用python操作mysql

使用python操作mysql

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

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

-- http://www.cnblogs.com/Colin-Cai

-- 数据库名称为test
create database test;
use test;

-- 生成表t
create table t ( a int, b int);
-- 插入数据
start transaction;
insert into t(a,b) values (1,1000);
insert into t(a,b) values (1,2000);
insert into t(a,b) values (1,3000);
insert into t(a,b) values (2,1000);
insert into t(a,b) values (2,2000);
insert into t(a,b) values (2,3000);
insert into t(a,b) values (3,1000);
insert into t(a,b) values (3,2000);
insert into t(a,b) values (3,3000);
commit work;

-- 一个插入的存储过程myinsert
-- 一个返回两个结果集的存储过程myproc
delimiter //
create procedure myinsert(in a_in int, in b_in int)
begin
insert into t(a,b) values(a_in, b_in);
end
//
create procedure myproc(in a_max int, in b_max int)
begin
select a,b from t where a <= a_max;
select a,b from t where b <= b_max;
end
//
delimiter ;

   python操作数据库代码如下:

#!/usr/bin/python
import MySQLdb

db = MySQLdb.Connect(host='localhost', user='root', passwd='123456', db='test')

cursor = db.cursor()
sql = 'call myproc(4,2000)'
#sql = 'select a,b from t'
#sql = 'insert into t(a,b) values(100,10000)';
print sql
try:
        cursor.execute(sql)
        seq = 1
        while 1:
                if seq > 1:
                        cursor.nextset()
                results = cursor.fetchall()
                if results:
                        print "No.%d" % (seq)
                        seq = seq + 1
                        for row in results:
                                print "%s %s" % (row[0],row[1])
                else:
                        break
except:
        print "Wrong"

print "OK"
db.close()

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

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

  最终关闭打开的数据库。

  运行一下

$ ./test_mysql.py
call myproc(4,2000)
No.1
1 1000
1 2000
1 3000
2 1000
2 2000
2 3000
3 1000
3 2000
3 3000
No.2
1 1000
1 2000
2 1000
2 2000
3 1000
3 2000
OK

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Scheme来实现八皇后问题(1)

      皇后是国际象棋里杀力最强的子,它可以吃掉同一条横线、竖线上其他棋子,也可以吃掉所在的两条斜线上的其他棋子(当然在角上只有一条斜线)。

    窗户
  • shell编程/字库裁剪(3)——验证

      程序写完了,必须要验证,这是重要的方法论。因为如果不验证,则不会知道程序写的对还是不对。学过人工智能或者控制论都知道,反馈非常重要,反馈形成闭环,可以用来指...

    窗户
  • Scheme实现数字电路仿真(3)——模块

      上一章介绍了数字电路的重要概念原语,可以用来做门级的元件。这一章里,我们在原语的基础上再引入模块的概念。

    窗户
  • SwiftUI:使用onDelete() 删除项目

    SwiftUI为我们提供了onDelete()修饰符,可用于控制应该如何从集合中删除对象。实际上,这几乎完全用于List和ForEach:我们创建一个使用For...

    韦弦zhy
  • cox可以火山图为什么gsea结果不行

    最近看到一个文献,是数据集:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE101668

    生信技能树
  • NPOI操作Excel(二)--创建Excel并设置样式

    由于XSSF中的XSSFWorkbook和HSSF中的HSSFWorkbook拥有的属性、方法等都是一样的,故下面就已一个为例做为展示,他们都继承与一个接口:I...

    zls365
  • leetcode: explore-array-31 旋转矩阵

    题目是英文的,但是看这个题目英文理解起来也不是很困难。关键词: 1、matrix: 矩阵 2、2D matrix: 二维矩阵 3、rotate: 旋转 4、cl...

    用户7685359
  • 报告 :搜索行业第二名太多了 搜狗、360究竟谁在说谎

    魏则西事件爆发之后,360与搜狗的火速补刀,让搜索行业变得火药味儿十足。两家的应对策略一个是下线医疗推广,而另一个却是上线名医频道。这一下一上也反映出两个老板...

    灯塔大数据
  • Leetcode 74 Search a 2D Matrix

    Write an efficient algorithm that searches for a value in an m x n matrix. This...

    triplebee
  • Excel小技巧39:将工作簿藏起来

    有时候,我们打开了多个工作簿。我们不想关掉其中的一些工作簿,因为有可能会用到它,而这些工作簿可能来自不同的文件夹,也可能工作簿文件较大导致开启较慢,这样放在桌面...

    fanjy

扫码关注云+社区

领取腾讯云代金券