Sql server 关键字';键';pyodbc错误42000
我在运行python脚本将数据从PostgreSQL推送到MSSQL时遇到了错误 2020/09/17 09:55:26:mssql:错误:在mssql中插入数据时出现了严重错误-bailing 回溯(最近一次呼叫最后一次): 文件“/my_File.py”,第40行,在ImportToMsqlReal中 dataToInsert) pyodbc.ProgrammingError:('42000',“[42000][Microsoft][ODBC驱动程序17 for SQL Server][SQL Server]关键字'key'附近的语法不正确。(156)(SQLExecute)”) 以下是代码行:Sql server 关键字';键';pyodbc错误42000,sql-server,python-3.x,postgresql,Sql Server,Python 3.x,Postgresql,我在运行python脚本将数据从PostgreSQL推送到MSSQL时遇到了错误 2020/09/17 09:55:26:mssql:错误:在mssql中插入数据时出现了严重错误-bailing 回溯(最近一次呼叫最后一次): 文件“/my_File.py”,第40行,在ImportToMsqlReal中 dataToInsert) pyodbc.ProgrammingError:('42000',“[42000][Microsoft][ODBC驱动程序17 for SQL Server][SQ
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
键
是SQL Server中的一个。您必须确保它位于括号之间:
SELECT 1 as [key]
、vi.proof::varchar(10485760)、vi.key::varchar(10485760)
对于T-SQL选择字段列表无效语法。你想在这里干什么?传递一个参数,转换一个值?我认为您需要显示失败的INSERT语句,而不是SELECT语句,它显然没有失败。