所以我在python中使用pyodbc库访问我的Microsoft Access数据库,只是尝试在我创建的字段中插入数据,其中一个字段是Attachments Type列。因此我试图找到一种方法通过python将附件插入我的accdb。
这是我的代码,我已成功连接到我的数据库。 这是我用来尝试插入文本和附件的内容;我将它作为由分号分隔的组合字符串,因为如果我选择并打印了附件列中的值,我将得到的输出: My Code for setting up a connection, getting the info from a database if it exists, and trying to insert both textual data and attachment data to a database
但是,运行后,我收到此错误,并且没有填充任何字段:Error generated for Insert
所以我的问题,重新说明:我如何使用python中的pyodbc库成功上传附件到我的Access数据库?
答案 0 :(得分:2)
如何在python中使用pyodbc库成功上传附件到我的Access数据库?
你做不到。 Access ODBC驱动程序不支持将文件插入“附件”字段。因此,你不能使用pyodbc来做到这一点。
我试图通过python找到一种方法将附件插入到我的accdb中。
您可以使用Python将文件插入附件字段,但您需要使用Access DAO来执行此操作。您可以将win32com与“标准”Python一起使用(我从未尝试过),或者您可以使用IronPython并通过.NET Framework操作Access DAO。
IronPython示例:
# Example table: [MyTable]
#
# ID - AutoNumber, Primary Key
# AttachedFiles - Attachment
#
#
# Add an attachment to an existing row where ID=1
import System
t = System.Type.GetTypeFromProgID("DAO.DBEngine.120")
dbe = System.Activator.CreateInstance(t)
db = dbe.OpenDatabase(r"C:\Users\Public\Database1.accdb")
rs_main = db.OpenRecordset("SELECT AttachedFiles FROM MyTable WHERE ID=1", 2) # dbOpenDynaset
rs_main.Edit()
rs_attach = rs_main.Fields["AttachedFiles"].Value
rs_attach.AddNew()
fld = rs_attach.Fields["FileData"] # "magic" field name for Attachments
fld.LoadFromFile(r"C:\Users\Gord\Desktop\sample.pdf")
rs_attach.Update()
rs_attach.Close()
rs_main.Update()
rs_main.Close()
db.Close()