我创建了一个函数来接受输入,并使用该输入写入SqLite3。
def dataAdder(caller,dbFile, table, pKeyName, pKey, **other):
print('~112',caller, dbFile, table, pKeyName, pKey, other)
… lots more code
如果我按如下方式拼写**other
的输入,它将起作用:
dataAdder('addBounces','contacts.db','Output','GlRef',glRef.replace("'",'') , Email = email, EmailBounceReason = bounceReason)
对变量glRef
,email
和bounceReason
进行评估,并且我的dataAdder()
处理正确
我代码的另一部分如下调用dataAdder()
并正常工作:
dataAdder('scanMembers','contacts.db','Output','GlRef', glRef, Email = 'No Email'),
glRef
的求值正确,并且print('~112', … )
返回:
~112 scanMembers contacts.db Output GlRef 5687292 {'Email': 'No Email'}
因此变量glRef
的求值正确为5687292
,而另一本词典的内容正确了
如果在同一函数中我在调用stmt
之前立即打印了一个变量dataAdder()
,则会导致输出:Email = 'No Email'
然后将其使用如下:
dataAdder('scanMembers','contacts.db','Output','GlRef', glRef, stmt)
这引起了:
TypeError: dataAdder() takes 5 positional arguments but 6 were given.
唯一的变化是删除文本:Email = 'No Email'
并替换为字符串变量stmt
,而print()函数将其显示为:Email = 'No Email'
,在我看来与替换的文字相同。
我的结论是stmt
尚未得到评估,但我不知道为什么。
我是正确的,还是我在做些愚蠢的事情,需要做些什么才能使它正常工作?
非常感谢