您应该使用SQL数据库而不是
dict基于-based的接口,因为SQL数据库已经处理了表中的多个元组。
无论如何,如果您想要一个
dict接口,则可以使用该
shelve模块(
bsddb已弃用,因此应避免使用该模块)并将每个值保存在
list:
import shelveCOLUMNS = ('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()上面的代码输出:
('John', 'Deer', 20, 'M') ('Ada', 'Lovelace', 23, 'F')如果要使用SQL数据库,则可以使用该
sqlite3模块。例如:
import sqlite3conn = 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)上面的代码输出:
(u'John', u'Deer', 20, u'M')(u'Ada', u'Lovelace', 23, u'F')
(请注意,这
u'...'仅表示字符串是unipre,不会更改其值)
但是,这段代码有一些问题(例如,尝试运行两次…),但是,如果您想遵循此路径,则 必须先
学习SQL,然后继续进行研究(有很多在线教程。例如
w3schools那些)。



