我无法将值插入表中?

yzxexxkh  于 2022-10-22  发布在  Python
关注(0)|答案(1)|浏览(62)

下面是代码:

a2 = input('Donor ID : ')
b2 = input('Donor Name : ')
c2 = int(input('Phone No. : '))
d2 = int(input('Age : '))
e2 = input('Blood Group : ')
f2 = int(input('Quantity donated : '))
g2 = input('Gender : ')

sql4 = "Insert into Donor('"+a2+"','"+b2+"','"+str(c2)+"','"+str(d2)+"','"+e2+"','"+str(f2)+"','"+g2+"')"
cursor.execute(sql4)

db.commit()
for x in cursor:
    print(x)

我输入的数据是:
捐赠者ID:12
捐赠者姓名:Sam
电话:12345678
年龄:34岁
血型:B+
捐赠数量:3
性别:M
这是我得到的错误:

ProgrammingError: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''12','sam','12345678','34','b+','3','m')' at line 1

我是自己学的。请帮我这个。。。

bq3bfh9z

bq3bfh9z1#

根据您的代码,原因是您的sql中缺少values
改变

sql4 = "Insert into Donor('"+a2+"','"+b2+"','"+str(c2)+"','"+str(d2)+"','"+e2+"','"+str(f2)+"','"+g2+"')"

sql4 = "Insert into Donor VALUES ('"+a2+"','"+b2+"','"+str(c2)+"','"+str(d2)+"','"+e2+"','"+str(f2)+"','"+g2+"')"

那么它应该会起作用。
更新1:
您最好在sql中指定列名,以避免在表结构更改时出现潜在问题

sql4 = "Insert into Donor (col1,col2,col3,col4,col5,col6,col7)VALUES('"+a2+"','"+b2+"','"+str(c2)+"','"+str(d2)+"','"+e2+"','"+str(f2)+"','"+g2+"')"

更新2:
为了避免sql injection,您最好使用Prepared Statement传递参数,参考位于using-prepared-statements-with-mysql-in-python
例如下面的代码

sql = "INSERT INTO {} (date, time, tag, power) VALUES (%s, %s, %s, %s);"
sql = sql.format(self.db_scan_table)
self.cursor.execute(sql, (d, t, tag, power))

相关问题