मैं अजगर में एक साधारण डेटाबेस प्रोग्राम को लागू करने की कोशिश कर रहा हूं। मैं बिंदु जहां मैं db के तत्वों को शामिल किया है करने के लिए मिल, मूल्यों, आदि बदलपायथन डेटाबेस कार्यान्वयन
class db:
def __init__(self):
self.database ={}
def dbset(self, name, value):
self.database[name]=value
def dbunset(self, name):
self.dbset(name, 'NULL')
def dbnumequalto(self, value):
mylist = [v for k,v in self.database.items() if v==value]
return mylist
def main():
mydb=db()
cmd=raw_input().rstrip().split(" ")
while cmd[0]!='end':
if cmd[0]=='set':
mydb.dbset(cmd[1], cmd[2])
elif cmd[0]=='unset':
mydb.dbunset(cmd[1])
elif cmd[0]=='numequalto':
print len(mydb.dbnumequalto(cmd[1]))
elif cmd[0]=='list':
print mydb.database
cmd=raw_input().rstrip().split(" ")
if __name__=='__main__':
main()
अब, एक अगले कदम के रूप में मैं इस अजगर के भीतर नेस्टेड लेनदेन करने के लिए सक्षम होना चाहता हूँ code.I शुरू एक BEGIN आदेश के साथ कमांड का सेट करें और फिर उन्हें COMMIT कथन के साथ प्रतिबद्ध करें। एक प्रतिबद्धता शुरू होने वाले सभी लेनदेन को करना चाहिए। हालांकि, रोलबैक को हालिया BEGIN में परिवर्तनों को वापस लेना चाहिए। मैं इसके लिए एक उपयुक्त समाधान के साथ आने में सक्षम नहीं हूँ।
def dbset(self, name, value):
self.transaction.append((name, self.database.get(name)))
self.database[name]=value
def rollback(self):
# undo all changes
while self.transaction:
name, old_value = self.transaction.pop()
self.database[name] = old_value
def commit(self):
# everything went fine, drop undo information
self.transaction = []
वही था जो मैं ढूंढ रहा था। उत्तर के लिए बहुत बहुत धन्यवाद। –