【发布时间】:2016-02-20 11:29:15
【问题描述】:
我正在尝试将一个字符串插入到以0x 开头的 SQL 数据库,但它在插入时一直失败。 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 代码
import pymssql as mssql
...
cursor.execute("insert into [TestDB].[dbo].[S3_Files] ([Key],[IsLatest],[LastModified],[MarkedForDelete],[VersionID]) values (%s,%s,%s,%s,%s)",(deleteitems['Key'],deleteitems['IsLatest'],deleteitems['LastModified'],MarkedforDelete, deleteitems['VersionId']))
conn_db.commit()
pymssql.ProgrammingError: (102, "附近有不正确的语法 'qb_QWQDrabGr7FTBREfhCLMZLw4ztx'.DB-Lib 错误消息 20018,严重性 15:一般 SQL Server 错误:检查来自 SQL Server 的消息")
有没有办法让Python、pymssql\mysql强制插入字符串?有没有我没有使用的字符串操作技术?我试过 pypyodbc 但没有运气。
编辑:我当前的补丁是改变字符串并在行中添加一个标志,所以我记得字符串以0x开头
【问题讨论】:
-
您收到的错误信息是什么?
-
如果没有更多信息,我猜它错误地将字符串转换为二进制/十六进制,因为字符串开头的'0x'。
-
这也是我的假设,但我正在寻找一种不需要我重写目前所拥有的解决方案。
-
该列的数据类型是什么?而且您确实需要参数化查询,而不是构建字符串并执行它们。
-
这是一个 varchar(200),我猜参数化使用的是
?而不是%s?
标签: python mysql sql-server