首页 > 解决方案 > pyodbc.ProgrammingError: ('42000'

问题描述

我正在编写一个 python 代码,它将一些非零值从 excel 表传输到 SQL 数据库表。我附上代码

data = pd.read_excel('D:\\Python code\\srch_mtx.xlsx', index_col=0)
print(data)

for m in range(len(data)+1):
    df_col = list(data.iloc[m][data.iloc[m] > 0].index)
    print(df_col)
    df_val = list(data.iloc[m][data.iloc[m] > 0])
    print(df_val)

    # read database
    conn = pyodbc.connect('driver={SQL Server}; server=NISHANTDHANORE\\SQLEXPRESS; database=search_matrix;'
                          'Trusted_Connection=yes;')

    cursor = conn.cursor()
    cursor.execute('SELECT*FROM search_matrix.dbo.blank')

    for x, y in enumerate(df_col):
        print(y)
        print(df_val[x])
        query = """UPDATE search_matrix.dbo.blank SET {} = {} WHERE F1='page348'""".format(y, df_val[x])
        cursor.execute(query)
        conn.commit()

虽然 'y' 的大多数值是字母字符串,但当 'y' 的值达到数值 40 时,程序会抛出编程错误,如下所示

    Traceback (most recent call last):
  File "D:/SQL db connection/table_fill_v3.py", line 25, in <module>
    cursor.execute(query)
pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near '40'. (102) (SQLExecDirectW)")

谁能帮我解决这个问题?提前致谢

标签: sqlpyodbc

解决方案


推荐阅读