Python 无法运行查询,因为mysql将字符串视为列名
我正在尝试使用列表中存储的数据将数据插入sql表 我使用的代码是:Python 无法运行查询,因为mysql将字符串视为列名,python,mysql,sql,Python,Mysql,Sql,我正在尝试使用列表中存储的数据将数据插入sql表 我使用的代码是: for index, row in df.iterrows(): cursor.execute("INSERT INTO final_attendance (Fac_id,Subject,Name,roll_id) VALUES ({fac}, {sub}, {name}, {roll})".format( fac = row['Fac_i
for index, row in df.iterrows():
cursor.execute("INSERT INTO final_attendance (Fac_id,Subject,Name,roll_id) VALUES ({fac}, {sub}, {name}, {roll})".format(
fac = row['Fac_id'],
sub = row['Subject'],
name = row['Name'],
roll = row['roll_id']))
但是当我运行这段代码时,sql将存储在列表中的数据视为列名,而不是普通的Varchar
例如:
输入数据的正确sql语法是
INSERT INTO final_attendance (Fac_id, Subject, Name, roll_id)
VALUES ("PRD", "CSE", "Tanmay Pardhi", 59)
但是我的代码写的是
INSERT INTO final_attendance (Fac_id, Subject, Name, roll_id)
VALUES (PRD, CSE, Tanmay Pardhi, 59)
因此,它将PRD视为一个列名
执行错误为“字段列表中的未知列“PRD”
提前谢谢 如果使用%s,它会处理字符串:
cursor.execute("INSERT INTO final_attendance (Fac_id,Subject,Name,roll_id) VALUES (%s, %s,%s,%s)",row['Fac_id'],row['Subject'],row['Name'],row['roll_id']))
如果使用%s,它会处理字符串:
cursor.execute("INSERT INTO final_attendance (Fac_id,Subject,Name,roll_id) VALUES (%s, %s,%s,%s)",row['Fac_id'],row['Subject'],row['Name'],row['roll_id']))
使用%s占位符请参见
使用%s占位符请参见
代替值
({fac},{sub},{name},{roll})
需要使用值(%s,%s,%d)
代替值({fac},{sub},{name},{roll})
需要使用值(%s,%s,%d)
字符串文字必须用引号括起来。试试。。值({fac}、{sub}、{name}、{roll})
(由于数值原因,roll没有被引用)尝试使用双引号保护列,使用单引号保护字符串。如果您需要在python字符串中转义引号,请使用\
。非常感谢@Akina。我花了几个小时试图连接那些撇号。谢谢你的帮助。是的,我会记住的@AlexanderEble。谢谢您的时间。字符串文字必须用引号括起来。试试。。值({fac}、{sub}、{name}、{roll})
(由于数值原因,roll没有被引用)尝试使用双引号保护列,使用单引号保护字符串。如果您需要在python字符串中转义引号,请使用\
。非常感谢@Akina。我花了几个小时试图连接那些撇号。谢谢你的帮助。是的,我会记住的@AlexanderEble。谢谢你的时间。非常感谢,它成功了!!非常感谢,成功了!!谢谢占位符和撇号正在工作。谢谢您的时间。谢谢占位符和撇号正在工作。谢谢您的时间。谢谢,它正在工作,而且占位符也证明比字符串格式更容易使用。是的。非常欢迎@TanmayPardhi。致以最良好的祝愿。感谢它的工作和占位符也被证明是更容易使用比字符串格式。是的。非常欢迎@TanmayPardhi。最美好的祝福。