<p>使用数据库。这比你想象的要容易。在</p>
<p><a href="http://docs.python.org/2/library/sqlite3.html" rel="nofollow">sqlite</a>是个不错的选择:</p>
<ol>
<li>因为<code>sqlite</code>与Python一起提供,所以不会有额外的依赖关系。在</li>
<li>一个数据库将允许更容易地访问更灵活的
使用嵌套dict查询。例如,你可以问,什么
社区的风险系数大于8?或者什么(邻居,
收入、风险系数)元组的4月<;0.10。在</li>
<li>你的数据可以保存在一个文件中,并且是可以读取的格式
即使是用其他语言编写的程序
而不是Python。在</li>
<li>只要你不希望有很多用户试图读或写
同时你的数据库,sqlite应该是相当满意的
为了这个任务。在</li>
<li>sqlite3数据库适配器具有<a href="http://docs.python.org/2/library/sqlite3.html" rel="nofollow">excellent documentation</a>,并符合<a href="http://www.python.org/dev/peps/pep-0249/" rel="nofollow">Python Database API Specification v2.0</a>。在</li>
<li>SQLite理解的SQL语言有<a href="https://sqlite.org/lang.html" rel="nofollow">excellent
documentation</a>。在</li>
</ol>
<p>以下是一些示例:</p>
<p><strong>创建数据库表:</strong></p>
<pre><code>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)''')
</code></pre>
<p><strong>或者,只在内存中创建数据库:</strong></p>
^{pr2}$
<p><strong>将数据插入表中:</strong></p>
<pre><code>sql = 'INSERT INTO aprtable (neighborhood, income, risk_factor, apr) value (?,?,?,?)'
args = ['Brighton', 20000, 10, 0.196]
cursor.execute(sql, args)
</code></pre>
<p>还可以查看<a href="http://docs.python.org/2/library/sqlite3.html#sqlite3.Connection.executemany" rel="nofollow">executemany</a>方法。在</p>
<p><strong>要找到给定邻里、收入和风险因素的apr:</strong></p>
<pre><code>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]
</code></pre>
<p><strong>根据邻里、收入和风险因素改变apr:</strong></p>
<pre><code>sql = 'UPDATE aprtable SET apr = ? WHERE neighborhood = ? and income = ? and risk_factor = ?'
args = [0.125, 'Allston', 25000, 5]
cursor.execute(sql, args)
</code></pre>
<p><strong>要找出哪些社区有风险因素>;8:</strong></p>
<pre><code>sql = 'SELECT neighborhoods from aprtable where risk_factor > ?'
args = [8]
cursor.execute(sql, args)
neighborhoods = cur.fetchall()
</code></pre>
<p><strong>要了解APR<;0.10的(邻里、收入、风险系数)值:</strong></p>
<pre><code>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)
</code></pre>