<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>smallfish logs &#187; MySQL</title>
	<atom:link href="http://chenxiaoyu.org/blog/archives/tag/mysql/feed" rel="self" type="application/rss+xml" />
	<link>http://chenxiaoyu.org</link>
	<description>关注 Python &#38; Go &#38; PostgreSQL</description>
	<lastBuildDate>Sat, 07 Aug 2010 10:31:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>MySQL &amp; PostgreSQL 小命令对比</title>
		<link>http://chenxiaoyu.org/blog/archives/175</link>
		<comments>http://chenxiaoyu.org/blog/archives/175#comments</comments>
		<pubDate>Fri, 05 Feb 2010 04:24:36 +0000</pubDate>
		<dc:creator>smallfish</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PostgreSQL]]></category>

		<guid isPermaLink="false">http://chenxiaoyu.org/blog/?p=175</guid>
		<description><![CDATA[对比下一些两个数据库常用的操作。分别使用自带的client程序。
MySQL命令行：
mysql -u 用户名 -h 主机地址 -P 端口号 数据库名 -p
PostgreSQL命令行：
psql -U 用户名 -h 主机地址 -p 端口号 数据库名
操作对比：
mysql                      psql

SHOW DATABASES;           \l
USE db-name;     [...]]]></description>
			<content:encoded><![CDATA[<p>对比下一些两个数据库常用的操作。分别使用自带的client程序。</p>
<p>MySQL命令行：</p>
<pre>mysql -u 用户名 -h 主机地址 -P 端口号 数据库名 -p</pre>
<p>PostgreSQL命令行：</p>
<pre>psql -U 用户名 -h 主机地址 -p 端口号 数据库名</pre>
<p>操作对比：</p>
<pre>mysql                      psql

SHOW DATABASES;           \l
USE db-name;              \c db-name
SHOW TABLES;              \d
SHOW USERS;               \du
SHOW COLUMNS;             \d table-name
SHOW PROCESSLIST;         SELECT * FROM pg_stat_activity;
SELECT now()\G            \x 可以打开和关闭类似\G功能
SOURCE /path.sql          \i /path.sql
LOAD DATA INFILE ...      \copy ...
\h                        \?</pre>
<hr />
<p><small>© smallfish for <a href="http://chenxiaoyu.org">smallfish logs</a>, 2010. |
<a href="http://chenxiaoyu.org/blog/archives/175">Permalink</a> |
<a href="http://chenxiaoyu.org/blog/archives/175#comments">One comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://chenxiaoyu.org/blog/archives/175&title=MySQL &#038; PostgreSQL 小命令对比">del.icio.us</a>
<br/>
Post tags: <a href="http://chenxiaoyu.org/blog/archives/tag/mysql" rel="tag">MySQL</a>, <a href="http://chenxiaoyu.org/blog/archives/tag/postgresql" rel="tag">PostgreSQL</a><br/>
</small></p>
<p>
<script type="text/javascript"><!--
google_ad_client = "pub-8914011260472945";
/* 468x60, 创建于 09-11-19 */
google_ad_slot = "7198645178";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://chenxiaoyu.org/blog/archives/175/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>mysqldumpslow 慢查询日志分析工具</title>
		<link>http://chenxiaoyu.org/blog/archives/111</link>
		<comments>http://chenxiaoyu.org/blog/archives/111#comments</comments>
		<pubDate>Tue, 15 Dec 2009 01:21:27 +0000</pubDate>
		<dc:creator>smallfish</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://chenxiaoyu.org/blog/?p=111</guid>
		<description><![CDATA[mysql自带的这个玩意挺好使的，可以对慢查询里的sql进行排序、计算等操作。
首先得配置my.cnf：

log_slow_queries = /path/slow.log # 定义log位置，注意要有写入的权限

具体的使法如下：

mysqldumpslow -s c -t 40 /path/slow.log

出来的结果是访问次数最多的40个sql，几个参数大概意思如下：

-t 显示多少条
-s 排序，默认是at。c是次数，t是时间，l是lock时间，r是返回结果。如果是ac，at，al，ar则是倒序
-g 可以用正则匹配部分语句

可以参考mysqldumpslow &#8211;help，通过这个工具可以看到哪些锁表，或者其他性能问题，还能看到某些SQL_NO_CACHE提示呢，去想办法优化把！

© smallfish for smallfish logs, 2009. &#124;
Permalink &#124;
No comment &#124;
Add to
del.icio.us

Post tags: MySQL







Feed enhanced by Better Feed from  Ozh
]]></description>
			<content:encoded><![CDATA[<p>mysql自带的这个玩意挺好使的，可以对慢查询里的sql进行排序、计算等操作。</p>
<p>首先得配置my.cnf：</p>
<pre>
log_slow_queries = /path/slow.log # 定义log位置，注意要有写入的权限
</pre>
<p>具体的使法如下：</p>
<pre>
mysqldumpslow -s c -t 40 /path/slow.log
</pre>
<p>出来的结果是访问次数最多的40个sql，几个参数大概意思如下：</p>
<pre>
-t 显示多少条
-s 排序，默认是at。c是次数，t是时间，l是lock时间，r是返回结果。如果是ac，at，al，ar则是倒序
-g 可以用正则匹配部分语句
</pre>
<p>可以参考mysqldumpslow &#8211;help，通过这个工具可以看到哪些锁表，或者其他性能问题，还能看到某些SQL_NO_CACHE提示呢，去想办法优化把！</p>
<hr />
<p><small>© smallfish for <a href="http://chenxiaoyu.org">smallfish logs</a>, 2009. |
<a href="http://chenxiaoyu.org/blog/archives/111">Permalink</a> |
<a href="http://chenxiaoyu.org/blog/archives/111#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://chenxiaoyu.org/blog/archives/111&title=mysqldumpslow 慢查询日志分析工具">del.icio.us</a>
<br/>
Post tags: <a href="http://chenxiaoyu.org/blog/archives/tag/mysql" rel="tag">MySQL</a><br/>
</small></p>
<p>
<script type="text/javascript"><!--
google_ad_client = "pub-8914011260472945";
/* 468x60, 创建于 09-11-19 */
google_ad_slot = "7198645178";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://chenxiaoyu.org/blog/archives/111/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perl 批量跳过 MySQL Slave 复制错误</title>
		<link>http://chenxiaoyu.org/blog/archives/107</link>
		<comments>http://chenxiaoyu.org/blog/archives/107#comments</comments>
		<pubDate>Tue, 15 Dec 2009 01:19:12 +0000</pubDate>
		<dc:creator>smallfish</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://chenxiaoyu.org/blog/?p=107</guid>
		<description><![CDATA[发现mysql slave服务器经常因为一些特殊字符或者符号产生的更新语句报错，整个同步也会因此而卡在那，最初的办法只是手动去出错的机器，执行下面三条sql语句，跳过错误即可。

slave stop;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
slave start;

一台slave机器用这样方法还行，多台就麻烦了，就顺手写了个简单的perl脚本，方便统一跳过错误，代码如下：

#!/usr/bin/env perl
use strict;
use warnings;

# get slave status
sub get_status {
    my ($ip, $usr, $pass) = @_;
    my $info = `mysql -u$usr -p$pass -h$ip -e 'show slave status\\G;'`;
    if (($info =~ /Slave_IO_Running: Yes/) &#38;&#38; ($info =~ /Slave_SQL_Running: No/)) {
     [...]]]></description>
			<content:encoded><![CDATA[<p>发现mysql slave服务器经常因为一些特殊字符或者符号产生的更新语句报错，整个同步也会因此而卡在那，最初的办法只是手动去出错的机器，执行下面三条sql语句，跳过错误即可。</p>
<pre>
slave stop;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
slave start;
</pre>
<p>一台slave机器用这样方法还行，多台就麻烦了，就顺手写了个简单的perl脚本，方便统一跳过错误，代码如下：</p>
<pre>
#!/usr/bin/env perl
use strict;
use warnings;

# get slave status
sub get_status {
    my ($ip, $usr, $pass) = @_;
    my $info = `mysql -u$usr -p$pass -h$ip -e 'show slave status\\G;'`;
    if (($info =~ /Slave_IO_Running: Yes/) &amp;&amp; ($info =~ /Slave_SQL_Running: No/)) {
        return 1;
    }
    return 0;
}
# mysql slave skip
sub slaveskip {
    my ($ip, $usr, $pass) = @_;
    print "slave error **\n";
    system("mysql -u$usr -p$pass -h$ip -e 'slave stop;'");
    system("mysql -u$usr -p$pass -h$ip -e 'set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;'");
    system("mysql -u$usr -p$pass -h$ip -e 'slave start;'");
}

my @hosts = qw/
192.168.0.101:root:tt1234
192.168.0.102:root: tt1234
192.168.0.103:root: tt1234
/;
foreach (@hosts) {
    my ($ip, $usr, $pass) = split ':';
    print "// ----- $ip\n";
    my $count = 1;
    while ($count &lt; 100000) {
        my $status = get_status($ip, $usr, $pass);
        print "i: $count status: $status\n";
        last if $status == 0;
        slaveskip($ip, $usr, $pass);
        select(undef, undef, undef, 0.1);
        $count++;
    }
    print "\n";
}

exit;
</pre>
<hr />
<p><small>© smallfish for <a href="http://chenxiaoyu.org">smallfish logs</a>, 2009. |
<a href="http://chenxiaoyu.org/blog/archives/107">Permalink</a> |
<a href="http://chenxiaoyu.org/blog/archives/107#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://chenxiaoyu.org/blog/archives/107&title=Perl 批量跳过 MySQL Slave 复制错误">del.icio.us</a>
<br/>
Post tags: <a href="http://chenxiaoyu.org/blog/archives/tag/mysql" rel="tag">MySQL</a>, <a href="http://chenxiaoyu.org/blog/archives/tag/perl" rel="tag">Perl</a><br/>
</small></p>
<p>
<script type="text/javascript"><!--
google_ad_client = "pub-8914011260472945";
/* 468x60, 创建于 09-11-19 */
google_ad_slot = "7198645178";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://chenxiaoyu.org/blog/archives/107/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Query Profile 简单使用</title>
		<link>http://chenxiaoyu.org/blog/archives/25</link>
		<comments>http://chenxiaoyu.org/blog/archives/25#comments</comments>
		<pubDate>Mon, 16 Nov 2009 08:27:12 +0000</pubDate>
		<dc:creator>smallfish</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://chenxiaoyu.org/blog/?p=25</guid>
		<description><![CDATA[MySQL Query Profile MySQL 5.0.37 以上开始支持 MySQL Query Profiler, 可以查询到此 SQL 会执行多少时间, 并看出 CPU/Memory 使用量, 执行过程中 System lock, Table lock 花多少时间等等.
详细可以参见官方文档：Using the New MySQL Query Profiler
启动
mysql&#62; set profiling=1;
Query OK, 0 rows affected (0.00 sec)
测试查询
mysql&#62; select count(*) from client where broker_id=2;
+----------+
&#124; count(*) &#124;
+----------+
&#124;      200 &#124;
+----------+
1 row in set (0.00 sec)
查看profiles
mysql&#62; show [...]]]></description>
			<content:encoded><![CDATA[<p>MySQL Query Profile MySQL 5.0.37 以上开始支持 MySQL Query Profiler, 可以查询到此 SQL 会执行多少时间, 并看出 CPU/Memory 使用量, 执行过程中 System lock, Table lock 花多少时间等等.</p>
<p>详细可以参见官方文档：<a href="http://dev.mysql.com/tech-resources/articles/using-new-query-profiler.html" target="_blank">Using the New MySQL Query Profiler</a></p>
<p>启动</p>
<pre>mysql&gt; set profiling=1;
Query OK, 0 rows affected (0.00 sec)</pre>
<p>测试查询</p>
<pre>mysql&gt; select count(*) from client where broker_id=2;
+----------+
| count(*) |
+----------+
|      200 |
+----------+
1 row in set (0.00 sec)</pre>
<p>查看profiles</p>
<pre>mysql&gt; show profiles;
+----------+------------+-----------------------------------------------+
| Query_ID | Duration   | Query                                         |
+----------+------------+-----------------------------------------------+
|        0 | 0.00007300 | set profiling=1                               |
|        1 | 0.00044700 | select count(*) from client where broker_id=2 |
+----------+------------+-----------------------------------------------+
2 rows in set (0.00 sec)</pre>
<p>查看单条profile</p>
<pre>mysql&gt; show profile for query 1;
+--------------------+------------+
| Status             | Duration   |
+--------------------+------------+
| (initialization)   | 0.00006300 |
| Opening tables     | 0.00001400 |
| System lock        | 0.00000600 |
| Table lock         | 0.00001000 |
| init               | 0.00002200 |
| optimizing         | 0.00001100 |
| statistics         | 0.00009300 |
| preparing          | 0.00001700 |
| executing          | 0.00000700 |
| Sending data       | 0.00016800 |
| end                | 0.00000700 |
| query end          | 0.00000500 |
| freeing items      | 0.00001200 |
| closing tables     | 0.00000800 |
| logging slow query | 0.00000400 |
+--------------------+------------+
15 rows in set (0.00 sec)

mysql&gt; alter table t engine=myisam;
Query OK, 112050 rows affected (0.64 sec)
Records: 112050  Duplicates: 0  Warnings: 0

mysql&gt; show profiles;
+----------+------------+-----------------------------------------------+
| Query_ID | Duration   | Query                                         |
+----------+------------+-----------------------------------------------+
|        0 | 0.00007300 | set profiling=1                               |
|        1 | 0.00044700 | select count(*) from client where broker_id=2 |
|        2 | 0.00003400 | set profiling=0                               |
|        3 | 0.00007400 | set profiling=1                               |
|        4 | 0.63789700 | alter table t engine=myisam                   |
|        5 | 0.00004000 | set profiling=0                               |
+----------+------------+-----------------------------------------------+
6 rows in set (0.00 sec)

mysql&gt; show profile for query 4;
+----------------------+------------+
| Status               | Duration   |
+----------------------+------------+
| (initialization)     | 0.00002900 |
| checking permissions | 0.00000800 |
| init                 | 0.00004000 |
| Opening table        | 0.00009400 |
| System lock          | 0.00000500 |
| Table lock           | 0.00000700 |
| setup                | 0.00004200 |
| creating table       | 0.00195800 |
| After create         | 0.00010900 |
| copy to tmp table    | 0.52264500 |
| rename result table  | 0.11289400 |
| end                  | 0.00004600 |
| query end            | 0.00000700 |
| freeing items        | 0.00001300 |
+----------------------+------------+
14 rows in set (0.00 sec)</pre>
<p>查看cpu资源等信息</p>
<pre>mysql&gt; show profile cpu for query 4;
+----------------------+------------+------------+------------+
| Status               | Duration   | CPU_user   | CPU_system |
+----------------------+------------+------------+------------+
| (initialization)     | 0.00002900 | 0.00000000 | 0.00000000 |
| checking permissions | 0.00000800 | 0.00000000 | 0.00000000 |
| init                 | 0.00004000 | 0.00000000 | 0.00000000 |
| Opening table        | 0.00009400 | 0.00100000 | 0.00000000 |
| System lock          | 0.00000500 | 0.00000000 | 0.00000000 |
| Table lock           | 0.00000700 | 0.00000000 | 0.00000000 |
| setup                | 0.00004200 | 0.00000000 | 0.00000000 |
| creating table       | 0.00195800 | 0.00000000 | 0.00100000 |
| After create         | 0.00010900 | 0.00000000 | 0.00000000 |
| copy to tmp table    | 0.52264500 | 0.55591600 | 0.04199300 |
| rename result table  | 0.11289400 | 0.00199900 | 0.00000000 |
| end                  | 0.00004600 | 0.00000000 | 0.00000000 |
| query end            | 0.00000700 | 0.00000000 | 0.00000000 |
| freeing items        | 0.00001300 | 0.00000000 | 0.00000000 |
+----------------------+------------+------------+------------+
14 rows in set (0.00 sec)</pre>
<p>其他属性列表</p>
<p>* ALL &#8211; displays all information<br />
* BLOCK IO &#8211; displays counts for block input and output operations<br />
* CONTEXT SWITCHES &#8211; displays counts for voluntary and involuntary context switches<br />
* IPC &#8211; displays counts for messages sent and received<br />
* MEMORY &#8211; is not currently implemented<br />
* PAGE FAULTS &#8211; displays counts for major and minor page faults<br />
* SOURCE &#8211; displays the names of functions from the source code, together with the name and line number of the file in which the function occurs<br />
* SWAPS &#8211; displays swap counts</p>
<p>设定profiling保存size</p>
<pre>mysql&gt; show variables where variable_name='profiling_history_size'; # 默认15条</pre>
<p>关闭</p>
<pre>mysql&gt; set profiling=0;</pre>
<hr />
<p><small>© smallfish for <a href="http://chenxiaoyu.org">smallfish logs</a>, 2009. |
<a href="http://chenxiaoyu.org/blog/archives/25">Permalink</a> |
<a href="http://chenxiaoyu.org/blog/archives/25#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://chenxiaoyu.org/blog/archives/25&title=MySQL Query Profile 简单使用">del.icio.us</a>
<br/>
Post tags: <a href="http://chenxiaoyu.org/blog/archives/tag/mysql" rel="tag">MySQL</a><br/>
</small></p>
<p>
<script type="text/javascript"><!--
google_ad_client = "pub-8914011260472945";
/* 468x60, 创建于 09-11-19 */
google_ad_slot = "7198645178";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://chenxiaoyu.org/blog/archives/25/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python MySQL 库安装笔记</title>
		<link>http://chenxiaoyu.org/blog/archives/23</link>
		<comments>http://chenxiaoyu.org/blog/archives/23#comments</comments>
		<pubDate>Tue, 10 Nov 2009 07:11:05 +0000</pubDate>
		<dc:creator>smallfish</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://pythonchina.org/smallfish/?p=23</guid>
		<description><![CDATA[其实MySQL-python安装很简直，以前一直也没在意，今天发觉换了1.2.3新版本，ms蹦出很多问题来了。
做个记录，防止以后有问题无处可查。
一般步骤是：
1. 安装easy_install
shell > wget http://peak.telecommunity.com/dist/ez_setup.py
shell > python ez_setup.py
会自动根据本机的py版本选择对应的egg，安装完可以看到有/usr/bin/easy_install程序了
2. 安装MySQL-python
shell > easy_install MySQL-python
到这里安装算是完成了，不过接下来测试就郁闷了。
在import MySQLdb出现了两个错误：
a). ImportError: libmysqlclient_r.so.15: cannot open shared object file: No such file or directory
这个错误一般解决比较简单，把路径加入到LD_LIBRARY_PATH即可，不过偶的现象比较强，因为没装MySQL，哈哈
b). ImportError: /lib/tls/libc.so.6: version `GLIBC_2.4' not found
解决这个错误的办法是不用easy_install了，直接下载MySQL-python-1.2.2.tar.gz包，然后就是三步走：
shell > tar zxvf MySQL-python-1.2.2.tar.gz
shell > cd MySQL-python-1.2.2
shell > python setup.py install

© smallfish for smallfish logs, 2009. &#124;
Permalink &#124;
No comment &#124;
Add to
del.icio.us

Post tags: MySQL, Python







Feed [...]]]></description>
			<content:encoded><![CDATA[<p>其实MySQL-python安装很简直，以前一直也没在意，今天发觉换了1.2.3新版本，ms蹦出很多问题来了。<br />
做个记录，防止以后有问题无处可查。</p>
<p>一般步骤是：</p>
<p>1. 安装easy_install</p>
<pre lan="shell">shell > wget http://peak.telecommunity.com/dist/ez_setup.py
shell > python ez_setup.py</pre>
<p>会自动根据本机的py版本选择对应的egg，安装完可以看到有/usr/bin/easy_install程序了</p>
<p>2. 安装MySQL-python</p>
<pre lan="shell">shell > easy_install MySQL-python</pre>
<p>到这里安装算是完成了，不过接下来测试就郁闷了。</p>
<p>在import MySQLdb出现了两个错误：</p>
<pre lan="shell">a). ImportError: libmysqlclient_r.so.15: cannot open shared object file: No such file or directory</pre>
<p>这个错误一般解决比较简单，把路径加入到LD_LIBRARY_PATH即可，不过偶的现象比较强，因为没装MySQL，哈哈</p>
<pre lan="shell">b). ImportError: /lib/tls/libc.so.6: version `GLIBC_2.4' not found</pre>
<p>解决这个错误的办法是不用easy_install了，直接下载MySQL-python-1.2.2.tar.gz包，然后就是三步走：</p>
<pre lan="shell">shell > tar zxvf MySQL-python-1.2.2.tar.gz
shell > cd MySQL-python-1.2.2
shell > python setup.py install</pre>
<hr />
<p><small>© smallfish for <a href="http://chenxiaoyu.org">smallfish logs</a>, 2009. |
<a href="http://chenxiaoyu.org/blog/archives/23">Permalink</a> |
<a href="http://chenxiaoyu.org/blog/archives/23#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://chenxiaoyu.org/blog/archives/23&title=Python MySQL 库安装笔记">del.icio.us</a>
<br/>
Post tags: <a href="http://chenxiaoyu.org/blog/archives/tag/mysql" rel="tag">MySQL</a>, <a href="http://chenxiaoyu.org/blog/archives/tag/python" rel="tag">Python</a><br/>
</small></p>
<p>
<script type="text/javascript"><!--
google_ad_client = "pub-8914011260472945";
/* 468x60, 创建于 09-11-19 */
google_ad_slot = "7198645178";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://chenxiaoyu.org/blog/archives/23/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python MySQLdb 查询返回字典结构</title>
		<link>http://chenxiaoyu.org/blog/archives/6</link>
		<comments>http://chenxiaoyu.org/blog/archives/6#comments</comments>
		<pubDate>Tue, 10 Nov 2009 06:20:55 +0000</pubDate>
		<dc:creator>smallfish</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://pythonchina.org/smallfish/?p=6</guid>
		<description><![CDATA[MySQLdb默认查询结果都是返回tuple，输出时候不是很方便，必须按照0，1这样读取，无意中在网上找到简单的修改方法，就是传递一个cursors.DictCursor就行。
默认程序：
import MySQLdb
db = MySQLdb.connect(host = 'localhost', user = 'root', passwd = '123456', db = 'test')
cursor = db.cursor()
cursor.execute('select * from user')
rs = cursor.fetchall()
print rs
# 返回类似如下
# ((1000L, 0L), (2000L, 0L), (3000L, 0L))
修改后：
import MySQLdb
import MySQLdb.cursors
db = MySQLdb.connect(host = 'localhost', user = 'root', passwd = '123456', db = 'test',
           [...]]]></description>
			<content:encoded><![CDATA[<p>MySQLdb默认查询结果都是返回tuple，输出时候不是很方便，必须按照0，1这样读取，无意中在网上找到简单的修改方法，就是传递一个cursors.DictCursor就行。</p>
<p>默认程序：</p>
<pre lan="Python">import MySQLdb
db = MySQLdb.connect(host = 'localhost', user = 'root', passwd = '123456', db = 'test')
cursor = db.cursor()
cursor.execute('select * from user')
rs = cursor.fetchall()
print rs
# 返回类似如下
# ((1000L, 0L), (2000L, 0L), (3000L, 0L))</pre>
<p>修改后：</p>
<pre lan="Python">import MySQLdb
import MySQLdb.cursors
db = MySQLdb.connect(host = 'localhost', user = 'root', passwd = '123456', db = 'test',
                     cursorclass = MySQLdb.cursors.DictCursor)
cursor = db.cursor()
cursor.execute('select * from user')
rs = cursor.fetchall()
print rs
# 返回类似如下
# ({'age': 0L, 'num': 1000L}, {'age': 0L, 'num': 2000L}, {'age': 0L, 'num': 3000L})</pre>
<p>或者也可以用下面替换connect和cursor部分</p>
<pre lan="Python">db = MySQLdb.connect(host = 'localhost', user = 'root', passwd = '123456', db = 'test')
cursor = conn.cursor(cursorclass = MySQLdb.cursors.DictCursor)</pre>
<hr />
<p><small>© smallfish for <a href="http://chenxiaoyu.org">smallfish logs</a>, 2009. |
<a href="http://chenxiaoyu.org/blog/archives/6">Permalink</a> |
<a href="http://chenxiaoyu.org/blog/archives/6#comments">3 comments</a> |
Add to
<a href="http://del.icio.us/post?url=http://chenxiaoyu.org/blog/archives/6&title=Python MySQLdb 查询返回字典结构">del.icio.us</a>
<br/>
Post tags: <a href="http://chenxiaoyu.org/blog/archives/tag/mysql" rel="tag">MySQL</a>, <a href="http://chenxiaoyu.org/blog/archives/tag/python" rel="tag">Python</a><br/>
</small></p>
<p>
<script type="text/javascript"><!--
google_ad_client = "pub-8914011260472945";
/* 468x60, 创建于 09-11-19 */
google_ad_slot = "7198645178";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://chenxiaoyu.org/blog/archives/6/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
