我通过参数传递一个元组,出现以下错误。 我在互联网上搜索,工作方法正确。有人可以看看吗?
人员班
from datetime import datetime
from sqldata import Sqldata
class Person:
def __init__(self, addr, client):
self.addr = "192.12"
self.client = "demorun"
self.name = none
def set_name(self, name):
self.name = name
values = (self.addr, self.name, str(datetime.now()))
Sqldata.create_connclient(values)
Sqldata类将数据写入数据库,
import sqlite3
from sqlite3 import Error
import os
fileDir = os.path.dirname(os.path.realpath(__file__))
filename = "dbConnClients.db"
db_file = os.path.join(fileDir, "database\\" + filename)
class Sqldata:
def __init__(self):
self.conn = None
try:
self.conn = sqlite3.connect(db_file)
except Error as e:
print(e)
def create_connclient(self, vdata):
print(vdata)
conn = self.conn
sqlquery = ''' SELECT id FROM ConnClients WHERE name = ? '''
cur = conn.cursor()
cur.execute(sqlquery, vdata[1])
错误:
File "...person.py", line 23, in set_name
Sqldata.create_connclient(vdata)
TypeError: create_connclient() missing 1 required positional argument: 'vdata'
答案 0 :(得分:0)
我假设Sqldata是您创建的类(由于缺少该特定代码和适当的缩进,因此产生了犹豫)。因为它是一个类,所以在调用它的方法之前需要对其进行实例化。
如果要匿名调用它,我不确定为什么将它设置为类,但是下面是解决方法:
Sqldata().create_connclient(values)
# if your __init__ function has args,
# you will need to input it in the instantiation
这意味着我们刚刚创建了类对象Sqldata
的实例。 create_connclient
有两个参数,self
和vdata
。通过调用Sqldata()
,您刚刚在调用self
时创建了一个create_connclient
值,并且满足了所有必需的参数(如错误所示)。
Sqldata类已正确启动。
class Sqldata:
def __init__(self):
self.conn = None
...
是TypeError,它指示我的类方法不接受元组。还是我错了?
答案 1 :(得分:0)
如果要将元组中的两个值作为两个参数self
和vdata
传递,则应这样编写。
Sqldata.create_connclient(*values)
星号打开元组的包装。但是,请阅读justahuman的回复,因为我认为他们可能已经发现了更深层次的问题。