ローカル バッファにデータを格納し、データベースへのインターフェイスとして機能するクラスを作成しようとしています。私は次のコードを持っています:
class Table(object):
def __init__(self, tableName, **columnDict):
self.tableName = tableName
self.columns = {}
self.types = {}
self.columns['id'] = []
self.types['id'] = 'INT PRIMARY KEY NOT NULL'
for name in columnDict:
self.columns[name] = []
self.types[name] = columnDict[name]
def updateBufferRow(self, index, updateDict):
for key in updateDict:
self.columns[key][index] = updateDict[key]
def getBufferRow(self, index):
row = {}
for key in self.columns:
row[key] = self.columns[key][index]
return row
def __getitem__(self, key, **args):
""" Allows using self[key] method """
return self.getBufferRow(key)
def __setitem__(self, key, value, **args):
""" Allows using self[key] = value method """
self.updateBufferRow(key, value)
テーブルを初期化する方法は次のとおりです。
testTable = Table('BestTable', test = 'TestType', test2='INT')
私が試してみると、期待どおりに動作します:
testTable[0]['test'] = "LALALA"
何もしませんが、テーブルを上書きするのではなく更新します。
testTable[0] = {"test": "LALALA"}
updateBufferRow() および getBufferRow() メソッドを書き直す必要があることはわかっていますが、_ getitem _ および _ setitem _ メソッドを使用して複数のキーを取得する方法だけはよくわかりません。