如何将python的输出保存到数据库?

时间:2015-03-25 15:11:35

标签: python database sqlite

我在urbandictionary写了一个简单的翻译脚本:

import urllib.request
import bs4

def translate():
    search=''
    while(search!='!'):
        search=input("Enter a word(! for exit): ")
        if search=='!':
            continue
        search2=search.replace(' ','+')
        urb_url='http://www.urbandictionary.com/define.php?term='+str(search2)
        urban=urllib.request.urlopen(urb_url).read().decode('utf-8')
        soup_urb = bs4.BeautifulSoup(urban)
        try:
            q2=soup_urb.find('div', class_="meaning").text
            print("{0}: {1}".format(search,q2))
        except AttributeError as e:
            print("The word not found\n")

现在我想保存搜索到的每个单词的结果,并且以后不再搜索。你的建议是什么? sqlite,保存在简单文本或其他解决方案中。

2 个答案:

答案 0 :(得分:2)

如果您计划向应用程序添加功能或者数据量可能会变大,SQLite是一种很好的方法:您可以将表添加到数据库和/或处理有用的SQL请求。

然而,它增加了您的架构的复杂性:使用数据库,使用SQL请求。

您也可以使用dictionary,其中键是“搜索”。和价值观是' q2'并使用pickle模块(Python对象序列化)存储它。这样,如果您的目的只是存储并获得翻译,那么您可以保持简单。

答案 1 :(得分:1)

您可以使用sqlite3或任何数据库。试试这个

import sqlite3

conn = sqlite3.connect('test.db')
try:
    conn.execute('''CREATE TABLE urbandictionary
           (SEARCH_WORD TEXT NOT NULL,
           SEARCH_STRING TEXT NOT NULL)''')
    print "Table created successfully";
except:
    pass

conn.close()

然后在你的print语句行中,输入

conn = sqlite3.connect('test.db')
conn.execute("INSERT INTO urbandictionary (SEARCH_WORD, SEARCH_STRING) \
      VALUES (?,?)", [search, q2])
conn.commit()
conn.close()

要查看结果,

conn = sqlite3.connect('test.db')
cur = conn.execute('select * from urbandictionary')
res = [dict(search_word=row[0], search_string=row[1]) for row in cur.fetchall()]
conn.close()

>>>res #gives you output