我不知道怎么处理这个错误。我如何通过SQL语句而不会出现此错误?我只能对SQL语句使用引号,所以不能更改数据类型。
我试图将INSERT语句重新格式化无济于事。
class MD:
def __init__(self):
self.conn = sqlite3.connect('Ex.db')
self.cursor = self.conn.cursor()
self.cursor.execute('''CREATE TABLE IF NOT EXISTS Exa (
Ex1 INTEGER PRIMARY KEY,
Ex2 TEXT NOT NULL,
);''')
self.conn.commit()
def close(self):
self.conn.close()
self.cursor.close()
def execute(self, exone, extwo):
self.cursor.execute()
def fetchall(self):
self.cursor.fetchall()
def fetchone(self):
self.cursor.fetchone()
def commit(self):
self.conn.commit()
Ex1 = tk.StringVar
Ex2 = tk.StringVar
Entry = tk.Entry(textvariable=Ex1)
Entry1 = tk.Entry(textvariable=Ex2)
MD.execute('INSERT INTO INTO Exa(Ex1, Ex2) VALUES (?, ?)', exone=Ex1, extwo=Ex2)
错误是
Traceback (most recent call last):
File "C:/Users/Josh/Downloads/Code/FurtherTest.py", line 42, in <module>
MD.execute('INSERT INTO INTO Exa(Ex1, Ex2) VALUES (?, ?)', exone=Ex1, extwo=Ex2)
File "C:/Users/Josh/Downloads/Code/FurtherTest.py", line 25, in execute
self.cursor.execute()
AttributeError: 'str' object has no attribute 'cursor'
答案 0 :(得分:1)
您在类(MD
)上调用执行方法 ,该调用中的第一个参数将传递给self
参数。由于第一个参数是字符串,因此会导致Exception。首先创建该类的实例:
...
md = MD()
md.execute('INSERT INTO INTO Exa(Ex1, Ex2) VALUES (?, ?)', exone=Ex1, extwo=Ex2)
通过在实例上调用方法,self参数将成为实例本身,并且INSERT字符串将传递给exone
参数。