Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python &引用;索引器:列表索引超出范围“;在对MySQL数据库进行充电时_Python_Mysql_Feed - Fatal编程技术网

Python &引用;索引器:列表索引超出范围“;在对MySQL数据库进行充电时

Python &引用;索引器:列表索引超出范围“;在对MySQL数据库进行充电时,python,mysql,feed,Python,Mysql,Feed,我在执行代码时得到以下错误代码。错误不会立即发生-它会在2-7小时后随机发生。在错误发生之前,流式传输在线提要并将其写入数据库是没有问题的 错误消息: Traceback (most recent call last): File "C:\Python27\MySQL_finalversion\RSS_common_FV.py", line 78, in <module> main() File "C:\Python27\MySQL_finalversion\RSS_common_F

我在执行代码时得到以下错误代码。错误不会立即发生-它会在2-7小时后随机发生。在错误发生之前,流式传输在线提要并将其写入数据库是没有问题的

错误消息:

Traceback (most recent call last):
File "C:\Python27\MySQL_finalversion\RSS_common_FV.py", line 78, in <module>
main()
File "C:\Python27\MySQL_finalversion\RSS_common_FV.py", line 63, in main
feed_iii = feed_load_iii(feed_url_iii)
File "C:\Python27\MySQL_finalversion\RSS_common_FV.py", line 44, in feed_load_iii
in feedparser.parse(feed_iii).entries]
IndexError: list index out of range
import feedparser
import MySQLdb
import time
from cookielib import CookieJar

db = MySQLdb.connect(host="localhost", # your host, usually localhost
                 user="root", # your username - SELECT * FROM mysql.user
                 passwd="****", # your password
                 db="sentimentanalysis_unicode",
                 charset="utf8") # name of the data base

cur = db.cursor()
cur.execute("SET NAMES utf8")
cur.execute("SET CHARACTER SET utf8")
cur.execute("SET character_set_connection=utf8")
cur.execute("DROP TABLE IF EXISTS feeddata_iii")

sql_iii = """CREATE TABLE feeddata_iii(III_ID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(III_ID),III_UnixTimesstamp integer,III_Timestamp varchar(255),III_Source varchar(255),III_Title varchar(255),III_Text TEXT,III_Link varchar(255),III_Epic varchar(255),III_CommentNr integer,III_Author varchar(255))"""

cur.execute(sql_iii)

def feed_load_iii(feed_iii):
return [(time.time(),
         entry.published,
         'iii',
         entry.title,
         entry.summary,
         entry.link,
         (entry.link.split('=cotn:')[1]).split('.L&id=')[0],
         (entry.link.split('.L&id=')[1]).split('&display=')[0],
         entry.author)
        for entry
        in feedparser.parse(feed_iii).entries]

def main():
feed_url_iii = "http://www.iii.co.uk/site_wide_discussions/site_wide_rss2.epl"

feed_iii = feed_load_iii(feed_url_iii)

print feed_iii[1][1]

for item in feed_iii:
    cur.execute("""INSERT INTO feeddata_iii(III_UnixTimesstamp, III_Timestamp, III_Source, III_Title, III_Text, III_Link, III_Epic, III_CommentNr, III_Author) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s)""",item)
db.commit()

if __name__ == "__main__":
while True:
    main()
    time.sleep(240)
如果您需要更多信息,请随时询问。我需要你的帮助


来自伦敦的感谢和问候

本质上,您的程序对格式不良的数据没有足够的弹性

您的代码对数据的结构做出了非常明确的假设,如果数据不是如此结构化,则无法处理。您需要检测数据格式不正确的情况,然后采取其他措施

一种相当草率的方法就是捕获当前引发的异常,您可以使用它(类似于)


首先,您需要修复缩进,现在关于您的问题,您要访问列表中不存在的单元格(请参见您的
拆分
),请在执行代码之前尝试打印或记录条目,这样你就知道你的问题出在哪里了。我是否以正确的方式理解了你:错误属于feed_load_iii块中的split函数?是否可以编写一个参数,如:try:split(X)except:set value'NULL',它是
return
语句
def feed\u load\u iii(feed\u iii):
。您知道像try:split(X)except:set value'NULL'这样的循环机会是否存在吗?但不是在列表理解中,另一个选择是使用生成器。你有没有想到#做点什么来报告或处理数据格式问题。。。我对Python非常陌生,不知道:(首先,报告它,这样您就可以修复数据错误,而不必忍受它!
try:
    feed_iii = feed_load_iii(feed_url_iii)
except IndexError:
    # do something to report or handle the data format problem