MySQL可以登陆账户后安装,也可以单击“No thanks, just start my download.”直接下载,如果安装时提示requires .NET Framework4.0,请网上搜索下载后再继续安装。安装界面时选择“Developer Default”单选按钮,后面直接点Next即可。
- 2.运行:由于MySQL安装就已经开启了服务,所以MySQL不需要用命令行来启动服务。可以在安装路径bin文件夹下打开cmd,输入以下命令,即可连接数据库。
mysql -uroot -p123456
若不设置密码,可以输入:mysql -uroot
查看数据库:show database;
打开某数据库:use XX
查看数据库中的数据表:show tables;
-
3.第三方库采用mysqlclient
py -3 -m pip install mysqlclient
-
4.实现,与sqlite3类似:
①创建一个供scrapy使用的数据库,取名为scrapydb,并创建数据表books;
mysql -uroot
CREATE DATABASE scrapydb;
USE scrapydb;
CREATE TABLE books(
upc CHAR(16) NOT NULL PRIMARY KEY,
name VARCHAR(256) NOT NULL,
price VARCHAR(16) NOT NULL,
review_rating INT,
review_num INT,
stock INT
)ENGINE INNODB DEFAULT CHARSET=utf8;
②mysql的简单示例可以另外建立一个py文件来运行,与sqlite3几乎相同:
# -*- coding: utf-8 -*-
import pymysql
#连接数据库,得到Connection对象
conn = pymysql.connect(host='localhost',user='root',db='scrapydb',port=3306,charset='utf8')
#创建Cursor对象,用于执行SQL语句
cursor = conn.cursor()
#创建数据表
##cursor.execute("CREATE TABLE person(name VARCHAR(32),age INT,sex char(1)) ENGINE INNODB DEFAULT CHARSET=utf8")
#插入一条数据
cursor.execute('INSERT INTO person VALUES(%s,%s,%s)',('李小龙',23,'M'))
#保存变更,commit后数据才会实际写入数据库
conn.commit()
#关闭连接
conn.close()
③用sqlite3已经建立的项目,在此基础上修改代码,首先是pipelines.py
# 爬取到的数据写入到MySQL数据库
import pymysql
class MysqlPipeline(object):
# 打开数据库
def open_spider(self, spider):
db = spider.settings.get('MYSQL_DB_NAME', 'scrapy_default')
host = spider.settings.get('MYSQL_HOST', 'localhost')
port = spider.settings.get('MYSQL_PORT', 3306)
user = spider.settings.get('MYSQL_USER', 'root')
#passwd = spider.settings.get('MYSQL_PASSWORD', '123456')
self.db_conn = pymysql.connect(host=host,port=port,db=db,user=user,charset='utf8')
self.db_cur = self.db_conn.cursor()
# 关闭数据库
def close_spider(self, spider):
self.db_conn.commit()
self.db_conn.close()
# 对数据进行处理
def process_item(self, item, spider):
self.insert_db(item)
return item
# 插入数据
def insert_db(self, item):
values = (
item['upc'],
item['name'],
item['price'],
item['review_rating'],
item['review_num'],
item['stock']
)
sql = 'INSERT INTO books VALUES(%s,%s,%s,%s,%s,%s)'
self.db_cur.execute(sql, values)
④settings.py
MYSQL_DB_NAME = 'scrapydb'
MYSQL_HOST = 'localhost'
MYSQL_USER = 'root'
ITEM_PIPELINES = {
'books.pipelines.BooksPipeline': 300,
# 'books.pipelines.SQLitePipeline': 400,
'books.pipelines.MysqlPipeline': 401,
}
⑤运行cmd命令:scrapy crawl books
,用MySQL Workbench显示了1000条结果。
MySQL管理工具也可以使用,直接下载中文版更好用:
网友评论