无法将数据输入SQL数据库

2024-09-29 19:37:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将值插入到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....。再说一遍,有人知道我的安全假设是否正确吗?你知道吗


Tags: key命令编辑sqlsize错误iteminsert
1条回答
网友
1楼 · 发布于 2024-09-29 19:37:00

我想当我们的图书馆试图比我们聪明的时候就会发生这种情况。。。你知道吗

没有SQL server可供测试,但我假设0x值失败的原因是因为pymssql传递参数的方式导致服务器将其解释为十六进制字符串,“0x”后面的“q”不符合其预期的0-9和a-F字符。你知道吗

我没有足够的信息来知道这是否是一个库错误和/或是否可以解决;pymssql文档不是很广泛,但我会尝试以下方法:

  • 如果可以的话,请检查MSSQL Profiler中的命令实际上是什么
  • 将您自己的命令构建为一个字符串,并查看错误是否仍然存在(在将其投入生产之前请记住Bobby表:https://xkcd.com/327/
  • 试着通过添加引号等来解决这个问题
  • 切换到另一个库/使用SQLAlchemy

相关问题 更多 >

    热门问题