友人nicholas.ding说:
尝试安装了一下 MySQL-python,发现竟然编译不过去,在网上搜了一下,找到了一个 workaround,应该是作者疏忽了。
原文在:http://www.keningle.com/?p=11
需要下载源码自行编译,首先修改 _mysql.c,删除从 34 行开始的 3 行。
#ifndef uint
#define uint unsigned int
#endif


uint port = MYSQL_PORT;
uint client_flag = 0;

修改为
unsigned int port = MYSQL_PORT;
unsigned int client_flag = 0;

创建一个符号链接
$ sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql

最后编译安装就可以了
$ python setup.py install

在我这里这样还是不可以,最后发现还要做如下改动,原因可能是我使用了mysql官方提供的package安装mysql,结果路径有些差异造成的:
在安装前还需要修改setup_posix.py,把mysql_config.path = “mysql_config”修改为:
mysql_config.path = “/usr/local/mysql/bin/mysql_config”

然后再sudo python setup.py install就OK了。

读http://www.blogjava.net/waterye/archive/2006/01/13/27952.html的感想:
关于存储过程和直接执行SQL:需要注意以下几点:1、从数据库角度,存储过程总是要比它所对应的纯SQL要慢。2、存储过程目的在于简化特别复杂的SQL复合应用的场景。3、但是对于一个拥有多条SQL的存储过程来说,它可以提升效率。因为减少了SQL传输的网络延迟。所以说SQL复杂时,存储过程可以增加实际的运行效率。注意对比第1条,第一条是对应服务器调用,这条对应实际的网络环境。4、还有就是存储过程很容易减少多条SQL之间数据传递的麻烦(有可能带来没有实际意义的中间变量),可以在服务器端把它们隐藏。所以我想应该考虑这几点来选择存储过程:1、拥有复杂的数据操作,需要SQL复合。2、中间传递的临时数据过多或者过大的时候。

使用存储过程的Java代码:JDBC call Stored Procedure
CallableStatement cstmt = conn.prepareCall("{ ? = call md5( ? ) }");// CallableStatement cstmt = conn.prepareCall("begin ? := md5( ? ); end;"); // oracle syntaxcstmt.registerOutParameter(1, Types.VARCHAR); // set out parameterscstmt.setString(2, "idea"); // set in parameterscstmt.execute();String md5Str = cstmt.getString(1); // Getting OUT Parameter Valuescstmt.close();