fo = open("C:Program FilesNPKIyessignUserSignCert.der","rb")
sssd = fo.read()
std = "SignCert.der"
cursor.execute("SELECT * FROM NPKIInf WHERE nSeqNum=5")
cursor.execute("insert into NPKIInf(nSeqNum, nFileName, nBinary) values ('7', '" + std + "', '" + sssd +"')")
cnxn.commit()
上面是代码,错误消息如下:
C:Python27>python import.py
Traceback (most recent call last):
File "import.py", line 12, in <module>
cursor.execute("insert into NPKIInf(nSeqNum,nFileName,nBinary) values('7', '" + std + "', '" + sssd +"')")
pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC SQL Server Driver][
SQL Server]xb9xaexc0xdaxbfxad '0???x8dxa0x03x02x01x02x02x04x14xe
0xd2?rx06t*x86Hx86xf7rx01x01x0bx05'xc0xc7 xb5xfbxbfxc8xc7xa5
xb0xa1 xc2xa6xc0xcc xb8xc2xc1xf6 xbexcaxbdxc0xb4xcfxb4xd9. (10
5) (SQLExecDirectW); [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]'0??
?x8dxa0x03x02x01x02x02x04x14xe0xd2?rx06t*x86Hx86xf7rx01x01x
0bx05' xb1xd9xc3xb3xc0xc7 xb1xb8xb9xaexc0xcc xc0xdfxb8xf8xb5x
c7xbexfaxbdxc0xb4xcfxb4xd9. (102)")
与数据库的连接很好,我也尝试插入硬数据,例如
cursor.execute("insert into NPKIInf(nSeqNum,nFileName,nBinary) values('7','test','test'")
仍然不起作用。
这是数据库表的信息:
CREATE TABLE [dbo].[NPKIInf](
[nSeqNum] [smallint] NOT NULL,
[nFileName] [nchar](50) NULL,
[nBinary] [varbinary](max) NULL,
[nHspName] [nchar](50) NULL,
CONSTRAINT [PK_NPKIInf] PRIMARY KEY CLUSTERED
(
[nSeqNum] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
我做错了什么?提前谢谢。
当我在SQL Server上运行以下命令时,您似乎没有转换为正确的数据类型:
insert into NPKIInf(nSeqNum,nFileName,nBinary) values('8','test', 'test')
它失败了,当我运行时:
insert into NPKIInf(nSeqNum,nFileName,nBinary) values('8','test', cast('test' as varbinary))
就您的实际查询而言,请查看:插入 pyodbc。二进制数据 (BLOB) 到 SQL Server 映像列中
它应该回答你的问题
错误消息显示您的(单)引号未配对。
[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]문자열 '0???뜝詵? *낷놑 u000b'의 따옴표가 짝이 맞지 않습니다.(105) (SQLExecDirectW); [42000] [Microsoft][ODBC SQL Server 驱动程序][SQL Server]'0???뜝詵? *낷놑 u000b' 근처의 구문이 잘못되었습니다.(102)
您的 sssd 中必须至少有一个引号,这会损坏直接构建的查询句子。