![](/img/trans.png)
[英]How to retrieve MS SQL data from deprecated TEXT field using python pyodbc? (pyodbc.ProgrammingError 42000)
[英]Error Inserting data into MS SQL Server Using Python pyodbc[Error 42000]
fo = open("C:\Program Files\NPKI\yessign\User\SignCert.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]\xb9\xae\xc0\xda\xbf\xad '0???\x8d\xa0\x03\x02\x01\x02\x02\x04\x14\xe
0\xd2?\r\x06\t*\x86H\x86\xf7\r\x01\x01\x0b\x05'\xc0\xc7 \xb5\xfb\xbf\xc8\xc7\xa5
\xb0\xa1 \xc2\xa6\xc0\xcc \xb8\xc2\xc1\xf6 \xbe\xca\xbd\xc0\xb4\xcf\xb4\xd9. (10
5) (SQLExecDirectW); [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]'0??
?\x8d\xa0\x03\x02\x01\x02\x02\x04\x14\xe0\xd2?\r\x06\t*\x86H\x86\xf7\r\x01\x01\x
0b\x05' \xb1\xd9\xc3\xb3\xc0\xc7 \xb1\xb8\xb9\xae\xc0\xcc \xc0\xdf\xb8\xf8\xb5\x
c7\xbe\xfa\xbd\xc0\xb4\xcf\xb4\xd9. (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.Binary數據(BLOB)插入SQL Server映像列
它應該回答你的問題
錯誤消息表明您的(單引號)不匹配。
[42000] [Microsoft] [ODBC SQL Server驅動程序] [SQL Server]문자열'0 ???뜝詵'? *낷놑?'의의가따옴표이맞지맞다。 (105)(SQLExecDirectW); [42000] [Microsoft] [ODBC SQL Server驅動程序] [SQL Server]'0 ???뜝詵? *낷놑?' 。이잘못되었습니다。 (102)
您的sssd必須至少包含一個引號,從而破壞您直接構建的查詢語句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.