如何在python中使用pyodbc库成功上传附件到我的Access数据库?

时间:2017-08-24 14:08:11

标签: python ms-access pyodbc

所以我在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数据库?

1 个答案:

答案 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()