我正在mysql连接器上创建python包装器。到目前为止,很简单:
class DBconnector:
def __init__(self, columns=None, values=None):
#connect to db
pass
def getcolumns(self, database=None):
columns = ("columnA1", "columnA2")
return columns
def getvalues(self, table=None, columns=None):
values = ("valB1", "valB2")
columns = columns
return values
def getprimary_key(self, table=None):
table_key = "someTableKey"
return table_key
db_conn = DBconnector()
mycolumns = db_conn.getcolumns()
myvalues = db_conn.getvalues()
mykey = db_conn.getprimary_key()
print(mycolumns, myvalues, mykey)
>>>> ('columnA1', 'columnA2') ('valB1', 'valB2') someTableKey
现在,我想实现诸如.as_list()
,.as_dict()
等之类的链接方法……这将使我能够在某些情况下获取所需的数据。例如,当我问db_conn.getvalues.asdict()
时,我将获得值和列作为键。
我可以这样实现:
class DBconnector:
def __init__(self, columns=None, values=None):
#connect to db
self.columns = columns
self.values = values
def getvalues(self, table=None, columns=None):
self.values = ("valB1", "valB2")
self.columns = columns
return self
def __repr__(self):
return str(self.values)
def asdict(self):
mydict = {}
for idx, col in enumerate(self.columns):
mydict[col] = self.values[idx]
return mydict
db_conn = DBconnector()
mycolumns = db_conn.getvalues(columns=["mycolumn1", "mycolumn2"])
print(mycolumns)
print(type(mycolumns))
mydictcolumns = mycolumns.asdict()
print(mydictcolumns)
>>>> ('valB1', 'valB2')
>>>> <class '__main__.DBconnector'>
>>>> {'mycolumn1': 'valB1', 'mycolumn2': 'valB2'}
但是我对此方法有一些疑问和疑问:
主要方法getvalues()
将仅返回无法再直接解析的对象,我将不得不实现其他方法以获取诸如.values()
(?)之类的值。
总的来说,我不确定如何避免复杂化,使其易于使用和可读。设计这样的类/模块的正确方法是什么?