我有一个 python 脚本,我需要将 pdf 插入到图像字段的 SQL 表中。我可以在该字段中添加几乎任何内容——数字、文本、pdf 的十六进制版本,但我无法使用字节或字节数组添加 pdf。document_image 字段被定义为图像。我已经验证了 sql 语句本身是正确的 - 如果我对 document_image 使用 null。
在下面的代码中,我尝试了 hex_report(它将插入,但 adobe 无法读取)、array_report 和 bin_report - 这两个给出了相同的错误。
report_map = "C:\\simple_test_pdf.pdf"
initial_report = open(report_map, 'rb').read()
hex_report = binascii.b2a_hex(initial_report)
array_report = bytearray(initial_report)
bin_report = bytes(initial_report)
db = abc_sql()
db.Set_database("image")
conn = db.Open_Connection()
conn.execute_scalar("DECLARE @return_value int, \
@new_serial_id int, \
@return_msg varchar(4000) \
EXEC @return_value = image.image_insert \
@new_serial_id = @new_serial_id OUTPUT, \
@return_msg = @return_msg OUTPUT, \
@pd_request_id = 776, \
@mime_type = 'application/pdf', \
@document_file_name = 'Report_Results.pdf', \
@document_description = 'Report and Map', \
@document_image = %s \
SELECT @new_serial_id as '@new_serial_id',\
@return_msg as '@return_msg', \
'Return Value' = @return_value", str(bin_report ))
我得到的错误是:
mssql.MssqlDatabaseException:SQL Server 消息 105,严重性 15,状态 1,第 1 行:字符串 '%PDF-1.5 %âãÏÓ 10 0 obj <> endobj 15 0 obj 后的未闭合引号
... '%PDF-1.5 ...附近的语法不正确...(截断)