0

pythons sqlite3モジュールを使用しているときに、テーブルを作成し、最初の行に4列と表示されていた場合、次の行には4列が必要ですか、それとも多かれ少なかれありますか?

語彙のデータベースを作成したいと思っています。各単語には、さまざまな数の定義があります。

たとえば、「set」には「panacea」よりもはるかに多くの定義があります。

この語彙データベースは、辞書参照サイトから単語と定義を簡単に検索できるスクレーパーを使用して作業します。

#! /usr/bin/env python
import mechanize
from BeautifulSoup import BeautifulSoup
import sys
import sqlite3

def dictionary(word):
    br = mechanize.Browser()
    response = br.open('http://www.dictionary.reference.com')
    br.select_form(nr=0)
    br.form['q'] = word 
    br.submit()
    definition = BeautifulSoup(br.response().read())
    trans = definition.findAll('td',{'class':'td3n2'})
    fin = [i.text for i in trans]
    query = {}
    for i in fin: 
        query[fin.index(i)] = i

    ## The code above is given a word to look up and creates a 'dict' of its definiton from the site.

    connection = sqlite3.connect('vocab.db')
    with connection:
        spot = connection.cursor()

        ## This is where my uncertainty is.  I'm not sure if I should iterate over the dict values and 'INSERT' for each definition or if there is a way to put them in all at once? 

        spot.execute("CREATE TABLE Words(Name TEXT, Definition TEXT)")
        spot.execute("INSERT INTO Words VALUES(word, Definition (for each number of definitions))")

    return query


print dictionary(sys.argv[1]) 

これは課題ではありませんが、sqlite3を学習するための個人的な演習です。

4

2 に答える 2

4

あなたのデザインは、リレーショナルデータベース(ウィキペディアがリレーションを「同じ属性を持つタプルのセット」として定義している)の精神に反しており、その1つはsqliteです。

ここでの適切な設計は、外部キーによってリンクされた単語の表と定義の表です。単語にその内容以外の属性がない場合は、単語テーブルをスキップして、定義テーブルのキーを使用するだけで解決できます。

ただし、単語ごとではなく、定義ごとに1つの行があることに注意してください。

于 2012-08-13T06:30:08.323 に答える
3

テーブルを作成し、最初の行に4列と表示されていた場合、次の行には4列が必要ですか、それとも多かれ少なかれありますか?

SQLiteでは、行のセル数が異なるテーブルを作成することはできません。ただし、行のセルに入れることはできます。Null

あなたが関係を必要とするPerpahs 1-to-n:各単語は多くの定義を持つことができます。

編集:

2つのテーブルがあるこの図を見てWordくださいDefiniton

                +------------+
+-------+       | Definition |
| Word  |       +------------+
+-------+       | id PK      |
| id PK |-1---*-| word_id FK |
| text  |       | text       |
+-------+       +------------+

両方のテーブルで、PKはテーブルの主キーです。のテーブルのPKを参照する列である外部キーFKをマークします。この図では、FKはのPKを参照しています。この関係は、2つの行の間の接続によって象徴されます。word_idDefinitonidWord-1---*-

于 2012-08-13T06:26:48.680 に答える