December 12, 2006
使用Perl连接Mysql数据库
作者:eygle
出处:http://blog.eygle.com
网站后台数据库转为Mysql,现在使用Perl连接数据库就方便多了。
通过DBI,Perl可以很容易的连接到数据库:
#!/bin/perl
use DBI;
# Connect to target DB
my $dbh = DBI->connect("DBI:mysql:database=eygle;host=localhost","username","password", {'RaiseError' => 1});# Insert one row
my $rows = $dbh->do("INSERT INTO test (id, name) VALUES (1, 'eygle')");# query
my $sqr = $dbh->prepare("SELECT name FROM test");
$sqr->execute();while(my $ref = $sqr->fetchrow_hashref()) {
print "$ref->{'name'}\n";
}$dbh->disconnect();
执行结果:
[root@eygle ~]# perl test.cgi
eygle
以后很多统计数据可以直接通过Perl写入Mysql数据库,操作起来方便多了。
看来这次迁移是值得的:)
-The End-
Posted by eygle at 3:33 PM | Comments (2)
eygle.com完成建站以来最大的一次迁移
作者:eygle
出处:http://blog.eygle.com
昨晚对网站( eygle.com )进行了建站以来最大的一次迁移。
迁移的主要内容包括:
1.将数据库由Berkeley DB转为Mysql
转换原因:Berkeley DB的管理和操作困难,自己不熟悉;Mysql的管理和维护就容易得多,也可以很容易的进行一些小开发以完善站点功能.
最初选择Berkeley DB是因为配置简单,但是不支持SQL,管理实在麻烦;而且数据量大了之后,总觉得更新性能很差;虽然现在Berkeley DB已经属于Oracle了,但是还是选择换掉它。
2.将网站字符集由GB2312转换为UTF-8
转换原因:建站之初选择了GB2312字符集,可是这个字符集和其他网站进行数据交互时就出现了问题,乱码是最头痛的,这次痛下决心,将网站转为UTF-8编码。
转换主要有以下几个注意事项:
1.MTEntryBasename 的问题
由于MT的导出功能不导出BaseName属性,缺省的会丢失所有自定义的Basename,参考DCBA的修正解决了这个问题。
需要修改的文件是: $MT_HOME/lib/MT/ImportExport.pm
以下红色部分代码为修改部分:
} elsif ($key eq 'TITLE') {
$entry->title($val);
} elsif ($key eq 'BASENAME') {
$entry->basename($val);
} elsif ($key eq 'DATE') {
第二处:
TITLE: <$MTEntryTitle strip_linefeeds="1"$>
BASENAME: <$MTEntryBasename strip_linefeeds="1"$>
STATUS: <$MTEntryStatus strip_linefeeds="1"$>
2.MT的Tag导出问题
同样,MT的导出功能不能导出Tag,这也是一个麻烦事,参考路杨的Hack也解决了这个问题。
仍然是修改: $MT_HOME/lib/MT/ImportExport.pm
以下红色部分代码为修改部分:
AUTHOR: <$MTEntryAuthor strip_linefeeds="1"$>
TITLE: <$MTEntryTitle strip_linefeeds="1"$>
STATUS: <$MTEntryStatus strip_linefeeds="1"$>
ALLOW COMMENTS: <$MTEntryFlag flag="allow_comments"$>
CONVERT BREAKS: <$MTEntryFlag flag="convert_breaks"$>
ALLOW PINGS: <$MTEntryFlag flag="allow_pings"$>
<MTEntryIfTagged>
Tags: <MTEntryTags><$MTTagName$>,</MTEntryTags>
</MTEntryIfTagged>
第二处修改为:
elsif ($key eq 'TITLE') { $entry->title($val); }
elsif ($key eq 'Tags') {
if ($val)
{
$cb->(MT->translate("Find tags ('[_1]')...\n", $val));
my @tagnames = split(',',$val);
$entry->add_tags(@tagnames);
}
}
现在MT3.3的导出功能是比较简单的,在MT的官方网站上看了一下,官方的说法是,目前正准备开发一个全新的导入导出模块,提供更为强大的功能,所以暂时不对现有的功能进行修正了。
接下来整个转换就比较顺利了,现在整个网站的后台是基于MySQL数据库的了。
-The End-
Posted by eygle at 10:36 AM | Comments (7)
