使用pymysql

时间:2017-01-17 11:59:24

标签: python mysql pymysql

我使用python3编写了一个小脚本,使用feedparser库获取RSS新闻源。

然后我遍历条目(字典),然后使用try / except块将数据插入到使用pymysql的MySQL数据库中(最初我尝试使用MySQLDB但是阅读here和其他地方一样不适用于Python3或更高版本)

我最初遵循git hub上的PyMySQL示例,但是这对我不起作用,我必须使用与digital ocean上的pymysql不同的语法。然而,当我在他们的网站上测试他们的例子时,这对我有用。

但是当我尝试将它合并到我的查询中时,出现了一个错误,因为它不会运行try块的代码并且每次只运行异常代码。

这是我的代码;

#! /usr/bin/python3

# web_scraper.py 1st part of the project, to get the data from the 
# websites and store it in a mysql database

import cgitb
cgitb.enable()

import requests,feedparser,pprint,pymysql,datetime
from bs4 import BeautifulSoup
conn = pymysql.connect(host="localhost",user="root",password="pass",db="stories",charset="utf8mb4")
c = conn.cursor()

def adbNews():
    url = 'http://feeds.feedburner.com/adb_news'
    d = feedparser.parse(url)
    articles = d['entries']
    for article in articles:
        dt_obj = datetime.datetime.strptime(article.published,"%Y-%m-%d %H:%M:%S")
        try:
           sql = "INSERT INTO articles(article_title,article_desc,article_link,article_date) VALUES (%s,%s,%s,%s,%s)"
           c.execute(sql,(article.title, article.summary,article.link,dt_obj.strftime('%Y-%m-%d %H:%M:%S'),))
         conn.commit()
        except Exception:
            print("Not working")


adbNews()

我不完全确定我做错了什么。我已经转换了字符串,因此它是MySQL DATETIME类型的格式。因为我最初没有这个,但每次运行程序时都没有任何内容存储在数据库中,异常会被打印出来。

编辑:

在读完Daniel Roseman的评论后,我删除了try / except块并读取了python给我的错误。这与我的SQL查询中的额外参数有关。

这是他编辑的工作代码;

#! /usr/bin/python3

# web_scraper.py 1st part of the project, to get the data from the 
# websites and store it in a mysql database

import cgitb
cgitb.enable()

import requests,feedparser,pprint,pymysql,datetime
from bs4 import BeautifulSoup
conn = pymysql.connect(host="localhost",user="root",password="pass",db="stories",charset="utf8mb4")
c = conn.cursor()

def adbNews():
    url = 'http://feeds.feedburner.com/adb_news'
    d = feedparser.parse(url)
    articles = d['entries']
    for article in articles:
        dt_obj = datetime.datetime.strptime(article.published,"%Y-%m-%d %H:%M:%S")
        #extra argument was here removed now
        sql = "INSERT INTO articles(article_title,article_desc,article_link,article_date) VALUES (%s,%s,%s,%s)"
        c.execute(sql,(article.title, article.summary,article.link,dt_obj.strftime('%Y-%m-%d %H:%M:%S'),))
        conn.commit()

adbNews()

0 个答案:

没有答案