我正在尝试在表格试验中加载数据,并且它显示无效的列名称 - 名称。
我动态地在Name和Area中传递值。
cursor.execute("insert into trial (NameofTheProperty, AreaofTheProperty)
values (Name, Area)")
cnxn.commit()
答案 0 :(得分:1)
您需要在列值周围加上引号,以便它们不会被解释为列名:
insert into
trial (NameofTheProperty, AreaofTheProperty)
values
("Name", "Area")
现在,既然你提到你动态地将这些值插入到查询中,你可以让你的数据库驱动程序处理引号和其他类似转换类型的东西:
property_name = "Name"
property_area = "Area"
cursor.execute("""
insert into
trial (NameofTheProperty, AreaofTheProperty)
values
(?, ?)""", (property_name, property_area))
cnxn.commit()
这称为查询参数化,被认为是将值插入SQL查询的最安全,最健壮的方法。这些?
值称为"占位符"。
请注意,数据库驱动程序会自动在字符串值周围加上引号 - 无需手动执行。