我收到错误消息除了MySQLdb.error之外,e'语法错误 - 尝试将scrapy spider写入mysql时语法无效,

时间:2014-04-04 12:50:51

标签: python mysql scrapy

这是我的pipelines.py,我在第18行收到错误。

import sys;sys.path.append("/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages")
import MySQLdb
import hashlib
from scrapy.exceptions import DropItem
from scrapy.http import Request

class TestPipeline(object):

    def __init__(self):
        self.conn = MySQLdb.connect(user='test', passwd='password', db='c1024403', host='ephesus.cs.cf.ac.uk', charset='utf8', use_unicode=True)
        self.cursor = self.conn.cursor()

    def process_item(self, item, spider):
        try:
            self.cursor.execute("""INSERT INTO test (test1, test2) VALUES (%s, %s)""", (item['Country'], item['Qualification']))
            self.conn.commit()

        except MySQLdb.Error, e:
            print 'Error %d: %s' % (e.args[0], e.args[1])
            sys.exit(1)

        return item

继承错误 -

File "project\pipelines.py", line 18
except MySQLdb.Error, e:
     ^
SyntaxError: invalid syntax

我已经安装了mysql-python和visual c ++ 2008 express,我不明白错误的含义,因为我无法在互联网上的任何其他地方找到任何关于它的信息。

1 个答案:

答案 0 :(得分:4)

您使用Python 3.x运行代码,但try.. except部分的代码方案适用于Python 2.X

如果您想使用Python 3.x运行代码,请更改此行:

except MySQLdb.Error, e:

要:

except MySQLdb.Error as e:

如果您希望此部分代码适用于Python 2.xPython 3.x,请将其更改为:

except MySQLdb.Error:
    e = sys.exc_info()[1]

阅读more

但根据您的print声明,您为Python 2.x编写了脚本,因此最好使用Python 2.x代替Python 3.x运行代码

此脚本的第一行中此sys.path.append("../python2.7/site-packages")行也很奇怪。

另外,您粘贴的第一个代码的缩进是错误的,我认为您仍在使用它,请使用当前正在编辑的版本。