我正在使用Python CRUD并试图连接到我的SQLite 3数据库,但我得到以下错误:
(类型错误:update_profile()缺少5个必需的位置参数:“姓名”、“年龄”、“性别”、“身高”和“体重”)
下面是我的代码:
def update_profile(self, name, age, gender, height, weight):
conn = sqlite3.connect("users_db.db")
c = conn.cursor()
c.execute("""UPDATE table_name SET name=?, age=?, gender=?, height=?, weight=? WHERE name=?, age=?, gender=?, height=?, weight=?""",
(new_name, new_age, new_gender, new_height, new_weight, old_name, old_age, old_gender, old_height, old_weight))
new_name = name.entry.get()
new_age = age.entry.get()
new_gender = gender.entry.get()
new_height = height.entry.get()
new_weight = weight.entry.get()
c.execute("SELECT * FROM name=?, age=?, gender=?, height=?, weight=?, WHERE name=?, age=?, gender=?, height=?, weight=?",(new_name, new_age, new_gender, new_height, new_weight, old_name, old_age, old_gender, old_height, old_weight))
datas = c.fetchall()
for datas in datas:
print(datas)
conn.commit()
conn.close()
1条答案
按热度按时间bgtovc5b1#
您遇到的错误是TypeError,指示update_profile()函数缺少五个必需的位置参数:“姓名”、“年龄”、“性别”、“身高”和“体重”。看起来您试图从一些输入字段(entry.get())中检索这些参数的值。但是,所提供的代码有几个问题需要解决。
首先,代码中有一些缩进错误。确保update_profile()函数中的代码正确缩进。
其次,在SQL查询中,您应该使用占位符(?)来传递参数值,而不是直接将它们插入到查询字符串中。这有助于防止SQL注入攻击并确保值的正确格式。
以下是代码的更新版本,其中包含必要的更正:
在更新的代码中,我从SELECT查询中删除了不必要的占位符,因为您不需要在查询中指定参数名称。而是在执行查询时按正确的顺序传递参数值。
请注意,在调用update_profile()函数之前,您仍然需要定义old_name、old_age、old_gender、old_height和old_weight的值。