我做到了!!!!
我正在做的事情有几个问题,在这里我提出了我为解决它所做的事情(在第一次使用 Ethan Furman 的解决方案实施它之后)
首先是驱动问题,原来Windows的DBF驱动是32位的程序,运行在64位的操作系统上,所以,我安装了Python-amd64,这是第一个问题,所以我安装了32位Python。
第二个问题是库/文件问题,据此, VFP > 7 中的 dbf 文件是不同的,所以我的 pyodbc 库无法正确读取它们,所以我尝试了一些 OLE-DB 库但没有成功,我决定从头开始。
谷歌搜索了一段时间把我带到了这篇文章,它终于让我明白了这一点
基本上,我所做的如下:
import win32com.client
conn = win32com.client.Dispatch('ADODB.Connection')
db = 'C:\\Profit\\profit_a\\ARMM'
dsn = 'Provider=VFPOLEDB.1;Data Source=%s' % db
conn.Open(dsn)
cmd = win32com.client.Dispatch('ADODB.Command')
cmd.ActiveConnection = conn
cmd.CommandText = "Select * from factura, reng_fac where factura.fact_num = reng_fac.fact_num AND factura.fact_num = 6099;"
rs, total = cmd.Execute() # This returns a tuple: (<RecordSet>, number_of_records)
while total:
for x in xrange(rs.Fields.Count):
print '%s --> %s' % (rs.Fields.item(x).Name, rs.Fields.item(x).Value)
rs.MoveNext() #<- Extra indent
total = total - 1
它给了我 20 条记录,我用 DBFCommander 检查了这些记录,一切正常
首先,您需要安装pywin32 扩展(32 位)和Visual FoxPro OLE-DB 提供程序(仅适用于 32 位),在我的情况下是 VFP 9.0
此外,最好阅读w3c 网站上的de ADO 文档
这对我有用。非常感谢回复的人