【问题标题】:Using Python s' win32com along with Foxpro (VFP OLEDB provider)使用 Python 的 win32com 和 Foxpro(VFP OLEDB 提供程序)
【发布时间】:2020-04-27 15:35:57
【问题描述】:

目前我正在尝试使用 python win32com 模块与 foxpro 数据库建立连接。 Python 代码目前如下所示:

    import win32com.client
    conn = win32com.client.Dispatch('ADODB.Connection')
    dsn = 'Provider=vfpoledb;Data Source=C:\MyDbFolder\MyDbContainer.dbc;'
    conn.Open(dsn)
    print('ok')

但是它说它找不到提供者;即便如此,我已经成功地从微软网站安装了最新版本的 Microsoft OLE DB Provider for Visual FoxPro 9.0。

'找不到提供者。它可能没有正确安装。'

我已经在不同的电脑上尝试过使用 python 32 位和 64 位版本。如果您使用 32 位 python,它可以工作。但是,如果需要使用 64 位 python,似乎也应该这样做。

有没有人顺利完成这项工作?

【问题讨论】:

  • 查看类似(部分已回答)的问题:stackoverflow.com/questions/56062925/…。我想必须可以从 64 位 python 使用 32 位 COM 对象,但不能“没有问题”。
  • 为其他读者澄清一下:没有 64 位 VFPOLEDB 提供程序,这意味着 64 位 python 需要以某种方式使用 32 位提供程序。由于涉及到数据库容器 (DBC),因此找到工作的第 3 方提供者的机会很小(与可以读/写 DBF 的东西相反,无论是否与其他用户同时)。

标签: python oledb adodb win32com visual-foxpro


【解决方案1】:

缺少 64 位 VFPOLEDB 驱动程序的一种可能解决方法是将 VFP 数据库设置为 32 位 MS SQL Server 实例中的链接服务器(Express 是免费的,应该可以工作)。 SQL Server 2014 似乎是最后一个提供 32 位版本的版本。 SQL Server 的 64 位 OLEDB 驱动程序很多,它们并不关心实例的位数。

ServerFault上How to successfully connect to Foxpro database files using MSSQL Linked Server feature and ODBC?里面有分步说明

注意:通过链接服务器使用 Fox 数据受到严重限制,并且远没有直接使用 Fox 或通过 VFPOLEDB 强大。但是,有时受限访问总比没有访问要好。

查询必须使用 SQL Server 语法,并且受到它的限制。例如,布尔字段映射到 bit 数据类型(0 或 1),因为 SQL Server 没有布尔概念。但是在 OpenQuery 调用中,您可以使用完整的 Fox 语法。假设链接服务器称为 FOX 并且表 StoffPZN 有一个布尔字段 op

select * from FOX...StoffPZN where op = 1;  -- T-SQL rules

select * from openquery(FOX, 'sele * from StoffPZN wher op');  -- Fox rules

【讨论】:

  • 感谢您的回答。但是在我们的情况下,由于商业原因,我们不允许使用 MS SQL。是否有可能使用不同的数据库有类似的解决方案?。
  • @foxprouser:我并不特别了解允许您将 OLEDB 数据源用作“可查询的东西”的其他引擎,因此您必须自己进行谷歌搜索。但是,MS SQL Server Express 是免费的,license terms 似乎没有对商业用途施加任何不当限制。此外,还存在商业 OLEDB 和 ODBC 驱动程序,它们允许您在不同程度上直接访问 Fox DBF,例如 devart 的 ODBC Driver for xBase。绝对值得一试 Google。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
  • 2010-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-08
  • 1970-01-01
相关资源
最近更新 更多