sqliteが「やり過ぎ」になるとは思いません。2.5以降の標準のPythonが付属しているため、インストールする必要はなく、メモリまたはローカルディスクファイルのいずれかでデータベースを作成および処理できます。本当に、どうしてもっと簡単にできるのでしょうか...?初期値を含むすべてをメモリ内に置き、dictを使用してそれらの初期値を表現したい場合、たとえば...:
import sqlite3
db = sqlite3.connect(':memory:')
db.execute('Create table Users (Name, Location, Type)')
db.executemany('Insert into Users values(:Name, :Location, :Type)', [
dict(Name="Mr. Foo", Location="Boston", Type="Secondary"),
dict(Name="Mr. Bar", Location="New York", Type="Primary"),
dict(Name="Mr. Quux", Location="Chicago", Type="Secondary"),
])
db.commit()
db.row_factory = sqlite3.Row
これで、メモリ内の小さな「db」を使用する準備が整いました。もちろん、ディスクファイルにDBを作成したり、テキストファイルやCSVなどから初期値を読み取ったりすることは難しくありません。
クエリは特に柔軟で、簡単で、簡単です。たとえば、文字列の挿入とパラメータの置換を自由に組み合わせることができます...:
def where(w, *a):
c = db.cursor()
c.execute('Select * From Users where %s' % w, *a)
return c.fetchall()
print [r["Name"] for r in where('Type="Secondary"')]
[u'Mr. Foo', u'Mr. Quux']
よりエレガントだが同等のように、を放出します
print [r["Name"] for r in where('Type=?', ["Secondary"])]
そしてあなたの望むクエリはただ:
print [r["Name"] for r in where('Location="Boston" or Type="Primary"')]
など。真剣に-嫌いなものは何ですか?