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

标签 python pyodbc

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

我正在动态地传递名称和区域内的值。

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

最佳答案

您需要在列值周围加上引号,这样它们就不会被解释为列名称:

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 查询的最安全、最可靠的方法。这些 ? 值称为“占位符”。

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

关于python - Pyodbc - 在表内加载数据导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47614591/

相关文章:

python - 如何在 Python 中导入 COM 对象命名空间/枚举?

Python 请求库 - 分块数据和 iter_lines

python - Python 中的多处理和套接字

python - 在 Linux 上使用 pyodbc 连接到 DB2

python - pypyodbc - 重用数据库连接

python - 使用 pyodbc 和 SQL 的 nvarchar 字段出现此 UnicodeDecodeError 的原因是什么?

python - 任何人都可以在 python 中解释这个减法和求和吗?

python - 3.3.5 更新后打开 .py 文件

sql-server - 从 Ubuntu 将 Python 连接到 SQL Server

Python通过pyodbc在Access中的十进制数中插入一个冒号