使用Scrapy獲取一些東西,我想將它存儲在數據庫中。之前從來沒有用MySQL或Python做任何事情,所以尋找一些幫助,爲什麼這將無法正常工作。Python添加到MySQL數據庫
這裏是我的代碼:
from __future__ import print_function
from metacritic.items import MetacriticItem
from mysql.connector import errorcode
import mysql.connector
import json
class MetacriticPipeline(object):
DB_NAME = 'metacritic'
TABLES = {}
TABLES['titles'] = (
"CREATE TABLE `titles` ("
" `name` varchar (14) NOT NULL,"
" PRIMARY KEY (`emp_no`)"
") ENGINE=InnoDB")
cnx = mysql.connector.connect(user='root', password = 'andy')
cursor = cnx.cursor()
def process_item(self, item, spider):
if item['title']:
return item
class JsonWriterPipeline(object):
def __init__(self):
self.file = open('items.jl', 'wb')
def process_item(self, item, spider):
line = json.dumps(dict(item)) + "\n"
self.file.write(line)
return item
class WriteToDatabasePipeline(object):
def create_database(cursor):
try:
cursor.execute(
"CREATE DATABASE {} DEFAULT CHARACTER SET 'utf8'".format(DB_NAME))
except mysql.connector.Error as err:
print("Failed creating database: {}".format(err))
exit(1)
try:
cnx.database = DB_NAME
except mysql.connector.Error as err:
if err.errno == errorcode.ER_BAD_DB_ERROR:
create_database(cursor)
cnx.database = DB_NAME
else:
print(err)
exit(1)
當我嘗試運行它,我得到的CMD此錯誤:
File "metacritic\pipelines.py", line 46, in WriteToDatabasePipeline
cnx.database = DB_NAME
NameError: name 'DB_NAME' is not defined
任何想法,這是爲什麼?它在我看來像DB_NAME被定義好嗎?我只想製作數據庫,然後嘗試添加表格。 感謝您的幫助
真棒工作非常感謝:) – AndyOHart