画像フィールドのSQLテーブルにPDFを挿入する必要があるPythonスクリプトがあります。このフィールドには、数値、テキスト、PDFの16進バージョンなど、ほぼすべてのものを追加できますが、bytesまたはbytearrayを使用してPDFを追加することはできません。document_imageフィールドは画像として定義されています。sqlステートメント自体が正しいことを確認しました-document_imageにnullを使用した場合。
次のコードでは、hex_report(挿入されますが、adobeでは読み取れません)、array_report、bin_reportを試しました。これら2つで同じエラーが発生します。
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%âãÏÓ100 obj <> endobj 15 0 obj
...'%PDF-1.5の近くの構文が正しくありません...(切り捨てられました)