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이 정의 된 것처럼 보입니다. 난 지금 데이터베이스를 만들고 나중에 테이블에 추가하려고합니다. 당신은 MetacriticPipeline
클래스 내부 DB_NAME
을 정의
awesome great thanks. – AndyOHart