gpt4 book ai didi

python - 如何使用字典为单个键赋予多个值?

转载 作者:行者123 更新时间:2023-11-28 22:52:56 28 4
gpt4 key购买 nike

我有一个 html 表单,其中包含 FirstnameLastNameAgeGender 以及一个 添加 按钮。我将数据输入表格,然后进入 Berkeelys 数据库。我的代码所做的是它只打印最后的值。我希望它应该显示与特定键相关的所有值

#!/usr/bin/python

import bsddb
import cgi

form = cgi.FieldStorage()

print "Content-type:text/html\n"
Fname = form.getvalue('firstname', '')
Lname = form.getvalue('lastname', '')
Age = form.getvalue('age', 0)
Gender = form.getvalue('gender', '')

#print Fname, Lname, Age

db = bsddb.hashopen("/home/neeraj/public_html/database/mydb.db","w")
db['FirstName'] = Fname
db['LastName'] = Lname
db['Age'] = Age
db['Gender'] = Gender
db.close()
db = bsddb.hashopen("/home/neeraj/public_html/database/mydb.db","r")
#db = bsddb.hashopen("/home/neeraj/public_html/database/mydb.db")
print db['FirstName'], db['LastName'], db['Age'], db['Gender']
db.close()
print db

最佳答案

您应该使用 SQL 数据库而不是基于 dict 的接口(interface),因为 SQL 数据库已经可以处理表中的多个元组。

无论如何,如果你想拥有一个dict接口(interface),你可以使用shelve模块(bsddb已被弃用,所以你应该避免使用它) 并将每个值保存在 list 中:

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()

以上代码输出:

('John', 'Deer', 20, 'M')       
('Ada', 'Lovelace', 23, 'F')

如果你想使用 SQL 数据库,你可以使用 sqlite3 模块。例如:

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)

以上代码输出:

(u'John', u'Deer', 20, u'M')
(u'Ada', u'Lovelace', 23, u'F')

(注意 u'...' 只是意味着字符串是 unicode,它不会改变它们的值)

但是这段代码有一些问题(例如尝试运行它两次......),但是如果你想遵循这条路那么你必须先学习 SQL,所以继续学习它(有很多在线教程。例如 w3schools 的)。

关于python - 如何使用字典为单个键赋予多个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19873620/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com