关键字“ key” pyodbc错误42000附近的语法不正确

时间:2020-09-17 15:47:01

标签: sql-server python-3.x postgresql

运行python脚本将数据从PostgreSQL推送到MSSQL时遇到错误。

2020/09/17 09:55:26:mssql:ERROR:将数据插入mssql时发生了非常错误的事情-崩溃 追溯(最近一次通话): importToMSSQLReal中的文件“ ./my_file.py”,第40行 dataToInsert) pyodbc.ProgrammingError :(“ 42000”,“ [42000] [Microsoft] [用于SQL Server的ODBC驱动程序17] [SQL Server]关键字“ key”附近的语法不正确。(156)(SQLExecute)”)

这是代码行:

query = """SELECT vi.asset_id ,vi.vulnerability_id,a.last_assessed_for_vulnerabilities as "last_detected",vi.status,vi.proof::varchar(10485760),vi.key::varchar(10485760),vi.service,vi.port,vi.protocol
    FROM  public.fact_asset_vulnerability_instance vi
    INNER JOIN public.dim_asset a
    ON vi.asset_id = a.asset_id"""

插入

def importToMSSQLReal(mssql,mssqlstring,dataToInsert):
mssql = pyodbc.connect(mssqlstring)
log = logging.getLogger('mssql')
curs = mssql.cursor()
curs.fast_executemany = True
try:
    curs.executemany(
            "INSERT INTO {table} (asset_id,vulnerability_id,last_detected,status,proof,key) VALUES (?,?,?,?,?,?)".format(table=mscfg['table']),
            dataToInsert)
    mssql.commit()
except:
    print("bad")
    log.exception("Something went very wrong interting data into mssql - bailing")
    exit(2)
curs.close()
mssql.close()
del mssql

1 个答案:

答案 0 :(得分:0)

Key是SQL Server中的reserved keyword。您必须确保它在方括号之间:

SELECT 1 as [key]