删除 pickle 中的数据
Deleting data in pickle
我有一个 pickle 数据库,里面有 5 个变量:rafTur, rafKat, rafNo, rafIndex, rafIndexData
。我正在尝试删除泡菜文件中的数据。我的主要目标是从用户那里获取输入,例如 this :
- rafTur = S rafKat = 1 rafNo = 2 rafIndex = 3
然后从名为 noSqlDB
的 pickle 文件中找到输入。然后删除有关输入的全部数据。
def delPic():
infile = open('noSqlDB', 'rb+')
sistem = pickle.load(infile)
flag = False
rafTur = str(input('Rafın türünü giriniz : '))
rafKat = int(input('Rafın katını giriniz : '))
rafNo = int(input('Rafın Nosunu giriniz : '))
rafIndex = int(input('Rafın indexini giriniz : '))
# read to the end of file.
for x in range((len(sistem) + 1)):
try:
if (sistem['rafTur'].upper() == rafTur.upper() and sistem['rafKat'] == rafKat and sistem['rafNo'] == rafNo and sistem['rafIndex'] == rafIndex):
del sistem
flag = True
sistem = pickle.load(infile)
except EOFError:
break
if flag == False:
print('Record not Found')
infile.close()
当我 运行 这段代码没有任何变化。数据保留在 noSqlDB
。如何删除 noSqlDB
中的数据? like this
我试过改变
del sistem
到
del sistem['rafTur'],sistem['rafKat'], sistem['rafNo'],sistem['rafIndex'],sistem['rafIndexData']
def unpickle_database(filename):
with open(filename, 'rb') as f:
while True:
try:
yield pickle.load(f)
except EOFError:
break
def save_object(obj, filename,a):
if a < 1:
with open(filename, 'wb+') as output:
pickle.dump(obj, output, pickle.HIGHEST_PROTOCOL)
else :
with open(filename, 'ab+') as output:
pickle.dump(obj, output, pickle.HIGHEST_PROTOCOL)
def delPic():
temp =0
students = list(unpickle_database('noSqlDB'))
for student in students:
print(student)
save_object(student, 'noSqlDB',temp)
temp += 1
在此处尝试一些代码后找到了解决方案。
我有一个 pickle 数据库,里面有 5 个变量:rafTur, rafKat, rafNo, rafIndex, rafIndexData
。我正在尝试删除泡菜文件中的数据。我的主要目标是从用户那里获取输入,例如 this :
- rafTur = S rafKat = 1 rafNo = 2 rafIndex = 3
然后从名为 noSqlDB
的 pickle 文件中找到输入。然后删除有关输入的全部数据。
def delPic():
infile = open('noSqlDB', 'rb+')
sistem = pickle.load(infile)
flag = False
rafTur = str(input('Rafın türünü giriniz : '))
rafKat = int(input('Rafın katını giriniz : '))
rafNo = int(input('Rafın Nosunu giriniz : '))
rafIndex = int(input('Rafın indexini giriniz : '))
# read to the end of file.
for x in range((len(sistem) + 1)):
try:
if (sistem['rafTur'].upper() == rafTur.upper() and sistem['rafKat'] == rafKat and sistem['rafNo'] == rafNo and sistem['rafIndex'] == rafIndex):
del sistem
flag = True
sistem = pickle.load(infile)
except EOFError:
break
if flag == False:
print('Record not Found')
infile.close()
当我 运行 这段代码没有任何变化。数据保留在 noSqlDB
。如何删除 noSqlDB
中的数据? like this
我试过改变
del sistem
到
del sistem['rafTur'],sistem['rafKat'], sistem['rafNo'],sistem['rafIndex'],sistem['rafIndexData']
def unpickle_database(filename):
with open(filename, 'rb') as f:
while True:
try:
yield pickle.load(f)
except EOFError:
break
def save_object(obj, filename,a):
if a < 1:
with open(filename, 'wb+') as output:
pickle.dump(obj, output, pickle.HIGHEST_PROTOCOL)
else :
with open(filename, 'ab+') as output:
pickle.dump(obj, output, pickle.HIGHEST_PROTOCOL)
def delPic():
temp =0
students = list(unpickle_database('noSqlDB'))
for student in students:
print(student)
save_object(student, 'noSqlDB',temp)
temp += 1
在此处尝试一些代码后找到了解决方案。