Pyodbc - 在表中加载数据导致错误

时间:2017-12-03 02:05:58

标签: python pyodbc

我正在尝试在表格试验中加载数据,并且它显示无效的列名称 - 名称。

我动态地在Name和Area中传递值。

cursor.execute("insert into trial (NameofTheProperty, AreaofTheProperty) 
              values (Name, Area)")
cnxn.commit() 

1 个答案:

答案 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查询的最安全,最健壮的方法。这些?值称为"占位符"。

请注意,数据库驱动程序会自动在字符串值周围加上引号 - 无需手动执行。