<p>您应该使用SQL数据库而不是基于<code>dict</code>的接口,因为SQL数据库已经处理了一个表中的多个元组。在</p>
<p>无论如何,如果您想要一个<code>dict</code>接口,您可以使用<code>shelve</code>模块(<code>bsddb</code>不推荐使用,因此您应该避免它),并将每个值保存在<code>list</code>中:</p>
<pre><code>import shelve
COLUMNS = ('FirstName', 'LastName', 'Age', 'Sex')
the_db = shelve.open('test.db', writeback=True)
for col_name in COLUMNS:
if col_name not in the_db:
the_db[col_name] = []
records = [
('John', 'Deer', 20, 'M'),
('Ada', 'Lovelace', 23, 'F'),
]
for record in records:
for col_name, value in zip(COLUMNS, record):
the_db[col_name].append(value)
the_db.close()
the_db = shelve.open('test.db')
for record in zip(*(the_db[col_name] for col_name in COLUMNS)):
print(record)
the_db.close()
</code></pre>
<p>以上代码输出:</p>
^{pr2}$
<hr/>
<p>如果要使用SQL数据库,可以使用<code>sqlite3</code>模块。
例如:</p>
<pre><code>import sqlite3
conn = sqlite3.connect('test.sqlite')
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE people (
FirstName text,
LastName text,
Age int,
Sex text
)''')
cursor.execute('''
INSERT INTO people values ('John', 'Deer', 20, 'M')''')
cursor.execute('''
INSERT INTO people values ('Ada', 'Lovelace', 23, 'F')''')
conn.commit()
for record in cursor.execute('''SELECT * FROM people'''):
print(record)
</code></pre>
<p>以上代码输出:</p>
<pre><code>(u'John', u'Deer', 20, u'M')
(u'Ada', u'Lovelace', 23, u'F')
</code></pre>
<p>(注意<code>u'...'</code>只是表示字符串是unicode,它不会改变它们的值)</p>
<p>然而,这段代码有一些问题(例如,尝试运行两次……),但是如果您想遵循这条路径,那么您必须先学习SQL,所以请继续学习(有很多在线教程)。例如<code>w3schools</code>个)。在</p>