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

Sar*_*ana 1 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")
Run Code Online (Sandbox Code Playgroud)

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

itz*_*nTV 5

您可以使用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()
Run Code Online (Sandbox Code Playgroud)

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

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

要查看结果,

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
Run Code Online (Sandbox Code Playgroud)