首页 > 解决方案 > SQLAlchemy:bytearray-upload 最终在 DB 中为 NULL

问题描述

我正在尝试将由字符串、varbinary 和 datetime 对象组成的行批量插入 MSSQL。

varbinary 对象实际上是一张图片,并且在逐个插入它们时上传这些行可以正常工作:

sql = ('insert into %s '
             '(id,cover_big,date) '
             'values (?,?,?)' % dest_table_covers
         )
         cover_big = pyodbc.Binary(big_cover)
         vars = (id, cover_big, now)
conn.execute(sql, vars)  #conn is Engine()

但是,当我尝试使用 ORM big_cover 时,总是以 NULL 结尾,而其他列包含预期的数据。

metadata = sqlalchemy.MetaData()
covers_table = sqlalchemy.Table(dest_table_covers,metadata,autoload=True,autoload_with=conn)
ins = covers_table.insert()
conn.execute(ins,cover_list)

谁能看到我做错了什么?我验证了(使用 print())这两种情况下的数据都以开头,bytearray(b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\...但在第二种情况下 big_cover-columns 最终为 NULL。

标签: pythonsql-serversqlalchemy

解决方案


推荐阅读