내가 sqlite가가 "과잉"이 될 것이라고 생각하지 않는다 - 그것은 2.5부터 표준 파이썬 함께 제공하므로 필요가 물건을 설치하지 않으려면, 그리고 그것을 만들어 메모리 또는 로컬 디스크의 파일을 하나의 데이터베이스를 처리 할 수 있습니다. 정말로, 어떻게 더 간단 할 수 있니? 당신은 모든 일에 메모리 ... 초기 값을 포함하여, 예를 들면, 그 초기 값을 표현하는 dicts을 사용하고자 할 경우 지금
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"')]
등 S eriously - 무엇을 좋아하지 않아?
고맙습니다. 전에 내장 세트를 사용한 적이 없습니다. 적어도 코드에서 어떤 일이 일어나는지 분명하게해야합니다. – akoumjian