我需要在python中创建类似于表的结构而不实际使用sqlite。所以,为了做这样的事情,我遇到了使用字典字典的可能性。
这给出了如下结构:
{'7865':{'Name':'john','age':'24','Index':'7865'},'Index':{'Name':[],'age':[],'Index'='ID'}}
此值永远不会按顺序排列,并且列名将始终根据用户输入而更改。(不能对键值对进行硬编码以匹配)
现在使用2个功能,一个用于用户输入,另一个用于设置字典列表
设置用户输入:
def CreateSchemaOnly():
my_dict1=defaultdict(list)
name=input("enter the DB name")
count=int(input("enter the column count"))
columnName=list()
for x in range(count):
a=input("enter column name")
columnName.append(a)
my_dict1[columnName[x]]=[]
index=input("Enter the Index")
my_dict1['Index']=index
Schema.Schemas().addRow(my_dict1,name)
设置架构
class Schemas(object):
'''
classdocs
'''
def __init__(self):
'''
Constructor
'''
self.rows = []# list of row objects, we assume if order of id
self.nameMap = {}# for faster direct lookup for row by name
def addRow(self, row,dbname):
self.rows.append(row)
self.nameMap['Index'] = row
output=open(dbname+'.pkl','wb')# to store schema in file and load when reqiured
pickle.dump(self.nameMap,output)
output.close()
print("Database Schema Created Successfully")
我需要执行各种DBMS操作,例如添加新记录,更新记录......
感谢帖子提供初步帮助:Python: Data Structure for Maintaing Tabular Data in Memory?
答案 0 :(得分:2)
我建议使用shelf来实现此目标。
“架子”是一个持久的,类似字典的对象。与“dbm”数据库的区别在于,架子中的值(而不是键!)可以是基本上任意的Python对象 - pickle模块可以处理的任何东西。这包括大多数类实例,递归数据类型和包含许多共享子对象的对象。键是普通的字符串。
但是在我们称之为“{3}}
之前,您要做的任何事情都已完成