使用Python的win32com和Foxpro(VFP OLEDB提供程序)

2024-09-28 22:48:08 发布

您现在位置:Python中文网/ 问答频道 /正文

目前,我正在尝试使用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网站成功安装了最新版本的Microsoft OLE DB Provider for Visual FoxPro 9.0

'Provider cannot be found. It may not be properly installed.'

我在不同的pc上用python 32位版本和64位版本都试过了。如果您使用32位python,它就可以工作。然而,如果需要使用64位python,似乎也应该这样做

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


Tags: 模块代码import版本client数据库beconn
1条回答
网友
1楼 · 发布于 2024-09-28 22:48:08

缺少64位VFPOLEDB驱动程序的一个可能的解决方法可能是将VFP数据库设置为MS SQL server的32位实例中的链接服务器(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?over中有分步指令

注意:通过链接服务器使用Fox数据受到严重限制,远不如直接使用Fox或通过VFPOLEDB使用Fox数据强大。然而,有时有限的访问总比完全没有访问要好

查询必须使用SQL server语法,并且受到SQL server语法的限制。例如,布尔字段被映射到bit数据类型(0或1),因为SQLServer没有布尔的概念。但是在OpenQuery调用中,您可以使用full-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

相关问题 更多 >