UU Blog

python从零写一个采集器:入库MySQL

采集到的数据,总归是要保存起来,保存到文件,或者数据库,方便以后取用。

思前想后,还是决定采用MySQL数据库,新版本叫MariaDB了,不过都是通用的。

安装MySQL-python模块

1
sudo easy_install MySQL-python

Issue:安装MySQL-Python出错mysql_config not found

插入数据

我这里MySQL位于我虚拟机172.25.254.18,数据库名yzy_data,用户名yzy_data,密码pass

我新建了一个表用于保存标题用户ID网盘URL
表结构如下

1
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE `test` (
`id` int(11) NOT NULL,
`title` varchar(255) NOT NULL,
`uid` varchar(30) NOT NULL,
`purl` varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;

ALTER TABLE `test`
ADD PRIMARY KEY (`id`);

ALTER TABLE `test`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

新增了一个ID的字段,方便索引数据,这个字段我设置是自增的,所以平时插入数据留空即可。

插入一条数据,标题:测试插入、用户ID:123321、网盘URL:http://pan.baidu.com/xxx

代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 导入mysql库
import MySQLdb

#连接数据库 指定编码utf8
conn = MySQLdb.connect(host="172.25.254.18",user="yzy_data",passwd="pass",db="yzy_data",charset="utf8")
cursor = conn.cursor()

# 执行插入数据
sql = "insert into `test`(title,uid,purl) values(%s,%s,%s)"
param = ("测试插入","123321","http://pan.baidu.com/xxx")
n = cursor.execute(sql,param)
print "insert",n

cursor.close()

我这里是用的是MyISAM表引擎,所以并不需要插入后conn.commit()来提交才能插入数据。像Innodb这类支持事务的表都需要。

参考资料

给作者打一针鸡血