데이터베이스를 사용한다. 생각보다 쉽습니다. sqlite
파이썬 함께 제공하기 때문에
이
- 여분의 의존성이 없을 것입니다 :
sqlite
는 좋은 선택이 될 것입니다.
- 데이터베이스는 중첩 된 dict보다 유연한 쿼리에 더 쉽게 액세스 할 수 있습니다. 예를 들어, 주변에 risk_factor> 8이 있는지 물을 수 있습니까? 또는 무엇을 (이웃, 소득, risk_factor) 튜플에 APR < 0.10이 있습니다.
- 데이터는 파일로 저장되고 다른 프로그램 ( )으로 읽을 수있는 형식 일 수 있으며 파이썬 이외의 다른 언어로 작성된 프로그램도 있습니다.
- 많은 사용자가 데이터베이스 을 동시에 읽거나 쓰려고하지 않는다면 sqlite는이 작업에 대해 매우 만족해야합니다 ( ).
- sqlite3 데이터베이스 어댑터는 excellent documentation이고 Python Database API Specification v2.0을 따릅니다.
- SQLite에서 이해할 수있는 SQL 언어는 excellent documentation입니다.여기
은 몇 가지 예입니다 :
데이터베이스 테이블을 만들려면 :
import sqlite3
with sqlite3.connect('apr.sqlite') as connection:
cursor = connection.cursor()
cursor.execute('''CREATE TABLE aprtable
(id INTEGER PRIMARY KEY AUTOINCREMENT,
neighborhood TEXT,
income INTEGER,
risk_factor INTEGER,
apr FLOAT)''')
을 또는 전용 메모리에 데이터베이스를 만들 :
with sqlite3.connect(':memory:') as connection:
....
데이터를 삽입하려면 테이블 :
sql = 'INSERT INTO aprtable (neighborhood, income, risk_factor, apr) value (?,?,?,?)'
args = ['Brighton', 20000, 10, 0.196]
cursor.execute(sql, args)
또한 executemany 방법을 확인한다.
는 지역, 소득과 risk_factor 주어진 4월를 확인하는 방법은 다음과 같습니다
sql = 'UPDATE aprtable SET apr = ? WHERE neighborhood = ? and income = ? and risk_factor = ?'
args = [0.125, 'Allston', 25000, 5]
cursor.execute(sql, args)
무엇을 찾으려면 : 이웃, 소득과 risk_factor를 주어진 4월을 변경하려면
sql = 'SELECT apr FROM aprtable WHERE neighborhood = ? and income = ? and risk_factor = ?'
args = ['Allston', 25000, 5]
cursor.execute(sql, args)
row = cur.fetchone()
if row is not None:
apr = row[0]
인근 지역에 risk_factor> 8 :
sql = 'SELECT neighborhoods from aprtable where risk_factor > ?'
args = [8]
cursor.execute(sql, args)
neighborhoods = cur.fetchall()
은 (지역, 소득, risk_factor)의 사월 < 0.10이 무엇인지 확인하는 방법은 다음과 같습니다
sql = 'SELECT neighborhood, income, risk_factor FROM aprtable WHERE apr < ?'
args = [0.10]
cursor.execute(sql, args)
for neighborhood, income, risk_factor in cursor:
print(neighborhood, income, risk_factor)
합니까 ['csv.DictReader'] (http://docs.python.org/library/csv.html#csv를 사용하여 4월를 확인하실 수 있습니다 .DictReader) look useful? –
키 대신 터플을 사용하지 않는 이유는 무엇입니까? 그것은 중첩 된 사전의 필요성을 제거 할 것입니다. – FastTurtle