ai didi

python - 使用 pyodbc 将 pickle 对象插入数据库

转载 作者:行者123 更新时间:2023-12-01 01:35:09 24 4
gpt4 key购买 nike

我尝试了以下方法,但没有成功:

keypoints_database = pickle.load( open( "5958.p", "rb" ) )

sql = 'INSERT INTO tb_fpdata (Std_SymbolNo , FP_Descriptors) VALUES (5958 , ?)' , pyodbc.Binary(keypoints_database)

我收到以下错误:

error message

如何将对象保存到数据库?

最佳答案

因此您有一个包含 pickled 对象的二进制文件。文件的十六进制转储如下所示:

00000000: 8004 9515 0000 0000 0000 007d 9428 8c03  ...........}.(..
00000010: 666f 6f94 4b01 8c03 6261 7294 4b02 752e foo.K...bar.K.u.

您可以将对象保存到二进制列,然后读回它并通过 pickle.loads 取消它,如下所示:

import pyodbc
import pickle

conn_str = (
r'DRIVER=ODBC Driver 17 for SQL Server;'
r'SERVER=.\SQLEXPRESS;'
r'DATABASE=myDb;'
r'Trusted_Connection=yes;'
)
cnxn = pyodbc.connect(conn_str, autocommit=True)
crsr = cnxn.cursor()
crsr.execute("CREATE TABLE #test (id INT PRIMARY KEY, pkl VARBINARY(max))")

# read pre-pickled object from file and save to table
with open(r'C:\Users\Gord\Desktop\data.pickle', 'rb') as f:
sql = "INSERT INTO #test (id, pkl) VALUES (?, ?)"
params = (1, f.read())
crsr.execute(sql, params)

# read it back from database and unpickle it
pickled_data = crsr.execute("SELECT pkl FROM #test WHERE id=1").fetchval()
unpickled_object = pickle.loads(pickled_data)

print(unpickled_object)
# {'foo': 1, 'bar': 2}

关于python - 使用 pyodbc 将 pickle 对象插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52458374/

24 4 0
文章推荐: jQuery 可扩展网格(2 列)
文章推荐: .net - 将 GUID 转换为 System.Drawing.Imaging.ImageFormat
文章推荐: javascript - Bootstrap Tour 是否允许验证错误消息?
文章推荐: neo4j - 多个neo4j节点加入: "This query builds a cartesian product between disconnected patterns"
行者123
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
全站热门文章
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com