2015-02-24 3 views
0

Я пытаюсь импортировать фид в базу данных Mysql, размещенную на pythoneverywhere, используя python, но я не могу заставить ее работать. вот код, который я использую.Импорт rss-файлов в базу данных MySQL с использованием python

import MySQLdb 
import feedparser 

myfeed = feedparser.parse("http://www.couponchief.com/rss/") 

for item in myfeed['items']: 
     title = item.title 
     link = item.link 
     description = item.description 
     print title 
     print link 
     print description 

     db =             
     MySQLdb.connect('mysql.server','lesmun','*******','lesmun$default'); 

     with db: 

      cur = db.cursor() 
      cur.execute("INSERT INTO ini(title, link, description)VALUES(%s,   
      %s, %s)", (title,link,description)) 
      print 'Succesfull!' 


# close the cursor 
      cur.close() 

# close the connection 
     db.close() 

любые предложения?

+1

В чем проблема? Есть ли трассировка, сообщение об ошибке или какое-либо другое описание того, что происходит не так? – mhawke

+0

Я понятия не имею, что он просто ничего не делает, когда я запускаю код, который кажется нормально, но его не впрыскивают ничего, а его не печатают мои объекты. @mhawke –

+0

Думали ли вы об использовании таких сервисов, как [Superfeedr] (https: // superfeedr.com), который будет использовать веб-кейс для отправки вам RSS-контента в JSON? Это избавит вас от парсинга и опроса. :) –

ответ

0

Возможно, вы используете старую версию MySQLdb, которая не поддерживает менеджеров контекста, которые автоматически совершают транзакции.

Вы можете обновить до последней версии, make your own, или вы можете явно позвонить db.commit() перед закрытием соединения.

Кроме того, нет необходимости (или желательно) создавать новые подключения к базе данных и создавать новые курсоры для каждой строки, которую вы вставляете. Ваш код будет лучше написан следующим образом:

import MySQLdb 
import feedparser 

myfeed = feedparser.parse("http://www.couponchief.com/rss/") 

# get connection and cursor upfront, before entering loop 
with MySQLdb.connect('mysql.server','lesmun','*******','lesmun$default') as db: 
    cur = db.cursor() 

    for item in myfeed['items']: 
     title = item.title 
     link = item.link 
     description = item.description 
     print title 
     print link 
     print description 

     cur.execute("INSERT INTO ini (title, link, description) VALUES (%s, %s, %s)", (title, link, description)) 
     print 'Succesfull!' 

# db.commit() # for older MySQLdb drivers 
Смежные вопросы