Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Chèn dữ liệu pyodbc.Binary (BLOB) vào cột hình ảnh SQL Server

Trước tiên, hãy đảm bảo rằng bạn sử dụng with open(..) để đọc tệp ( một ví dụ khác ). Thao tác này sẽ tự động đóng các đối tượng tệp khi chúng hết hoặc một ngoại lệ được đưa ra.

# common vars
connection = pyodbc.connect(...)
filename = 'Test.ics'
insert = 'insert into documents (name, documentType, document, customerNumber)'

# without hex encode
with open(filename, 'rb'):
    bindata = f.read()

# with hex encode
with open(filename, 'rb'):
    hexdata = f.read().encode('hex')

# build parameters
binparams = ('test200.ics', 'text/calendar', pyodbc.Binary(bindata), 1717)
hexparams = ('test200.ics', 'text/calendar', pyodbc.Binary(hexdata), 1717)

# insert binary
connection.cursor().execute(insert, binparams)
connection.commit()

# insert hex
connection.cursor().execute(insert, hexparams)
connection.commit()

# print documents
rows = connection.cursor().execute('select * from documents').fetchall()
for row in rows:
    try:
        # this will decode hex data we inserted
        print str(row.document).decode('hex')
    # attempting to hex decode binary data throws TypeError
    except TypeError:
        print str(row.document)

Tôi đoán bạn đang nhận được 0x343234353... dữ liệu bằng cách xem kết quả trong Management Studio:

Điều này không có nghĩa là dữ liệu được lưu trữ theo cách này, đó chỉ là cách Management Studio đại diện cho image , text , ntext , varbinary , v.v. các kiểu dữ liệu trong ngăn kết quả.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận danh sách tài khoản thư cơ sở dữ liệu trong SQL Server (T-SQL)

  2. Các loại con trỏ máy chủ SQL - Con trỏ động | Hướng dẫn sử dụng SQL Server / TSQL

  3. Làm cách nào để thay đổi SQL Server 2005 thành phân biệt chữ hoa chữ thường?

  4. Các ràng buộc có thể hoãn lại trong SQL Server

  5. Việc chuyển đổi kiểu dữ liệu datetime2 thành kiểu dữ liệu smalldatetime dẫn đến giá trị nằm ngoài phạm vi. \ R \ n Câu lệnh đã bị chấm dứt