尝试将字符串插入SQL时出现问题

2024-06-28 18:55:16 发布

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

我试图将一个以0x开头的字符串插入到sqldb中,但在插入时总是失败。0x之后的字符是范围从A-Z、A-Z和0-9的随机字符,没有设置长度。我试图绕过它,在字符串前面添加一个字母,然后更新它,但它不起作用。我正在使用

我试图模仿的SQL语句

insert into [TestDB].[dbo].[S3_Files] ([Key],[IsLatest],[LastModified],[MarkedForDelete],[VersionID]) values ('pmtg-dox/CCM/Trades/Buy/Seller_Provided_-_Raw_Data/C''Ds_v2/NID3153422.pdf','1','2015-10-11','Yes', '0xih91kjhdaoi23ojsdpf')

Python代码

^{pr2}$

pymssql.ProgrammingError: (102, "Incorrect syntax near 'qb_QWQDrabGr7FTBREfhCLMZLw4ztx'.DB-Lib error message 20018, severity 15: General SQL Server error: Check messages from the SQL Server")

有没有办法让Python,pymssql\mysql强制插入字符串?有没有我不使用的字符串操作技术?我试过pypyodbc,但没有运气。在

编辑:我当前的补丁是修改字符串并在行中添加一个标志,这样我就记住字符串以0x开头


Tags: 字符串sqls3server字母errorfiles语句
1条回答
网友
1楼 · 发布于 2024-06-28 18:55:16

这是我想出的解决方案。在

由于使用适当的值运行insert命令是有效的,所以我在SQL中创建了一个存储过程来处理我的请求

USE [TestDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[stp_S3Files]
@Key_ varchar(4000),
@IsLatest_ varchar(200),
@Size_ varchar(200),
@LastModified_ varchar(200),
@MarkedForDelete_ varchar(200),
@VersionID_ varchar(200)
AS
insert into [TestDB].[dbo].[S3_Files] ([Key],[IsLatest],[Size(Bytes)],[LastModified],[MarkedForDelete],[VersionID]) values (@Key_, @IsLatest_, @Size_, @LastModified_, @MarkedForDelete_, @VersionID_)

然后我通过Python调用它

^{pr2}$

注意:字符串替换是用'来转义字符来处理路径名。我希望这对将来有同样问题的人有所帮助。在

相关问题 更多 >