我正在尝试将值插入到SQLDB中,从字典中提取数据。当我的程序试图将0xqb_QWQDrabGr7FTBREfhCLMZLw4ztx
输入名为VersionId的列时,我遇到了一个问题。下面是我的示例代码和错误。你知道吗
cursor.execute("""insert into [TestDB].[dbo].[S3_Files] ([Key],[IsLatest],[LastModified],[Size(Bytes)],[VersionID]) values (%s,%s,%s,%s,%s)""",(item['Key'],item['IsLatest'],item['LastModified'],item['Size'],item['VersionId']))
conn_db.commit()
pymssql.ProgrammingError: (102, "Incorrect syntax near 'qb_QWQDrabGr7FTBREfhCLMZLw4ztx'.DB-Lib error message 20018, severity 15:\nGeneral SQL Server error: Check messages from the SQL Server\n")
基于这个错误,我假设由于安全问题,SQL不喜欢VersionId字符串开头的0x
。如果我的假设是正确的,我有什么选择?我也不能更改VersionId的值。你知道吗
编辑:这是我打印光标命令时得到的结果
insert into [TestDB].[dbo].[S3_Files] ([Key],[IsLatest],[LastModified],[Size(Bytes)],[VersionID]) values (Docs/F1/Trades/Buy/Person1/Seller_Provided_-_Raw_Data/GTF/PDF/GTF's_v2/NID3154229_23351201.pdf,True,2015-07-22 22:05:38+00:00,753854,0xqb_QWQDrabGr7FTBREfhCLMZLw4ztx)
编辑2:奇怪的是,当我尝试在sqlmanagementstudio上手动输入insert命令时,它不喜欢第一个参数中路径名中的('),所以我对字符进行了转义,将(')添加到除数字和命令之外的每个值中。在这一点上,我相当困惑为什么插入不起作用。你知道吗
编辑3:我决定做一个尝试,除了在每个插入上,我看到那些被捕获的versionID具有模式0x....
。再说一遍,有人知道我的安全假设是否正确吗?你知道吗
我想当我们的图书馆试图比我们聪明的时候就会发生这种情况。。。你知道吗
没有SQL server可供测试,但我假设0x值失败的原因是因为pymssql传递参数的方式导致服务器将其解释为十六进制字符串,“0x”后面的“q”不符合其预期的0-9和a-F字符。你知道吗
我没有足够的信息来知道这是否是一个库错误和/或是否可以解决;pymssql文档不是很广泛,但我会尝试以下方法:
相关问题 更多 >
编程相关推荐