【问题标题】:Connecting to Paradox database (*.px) using sqlalchemy/python使用 sqlalchemy/python 连接到 Paradox 数据库 (*.px)
【发布时间】:2018-02-07 05:41:30
【问题描述】:

我显然正在努力使用 sqlalchemy 建立与 paradox 数据库的连接,因为方言似乎没有特色......是的,我知道 paradox 已经过时,但我需要让它工作,因为我的老板有自己的有悖论支持的加油站。我让它与 pypyodbc 一起工作,自从我进入 VBA 几年以来,这并没有那么困难,而且事情一开始并不那么奇怪。使用 etl 管道切换到 python 让我的生活变得更加轻松......此时我正在尝试从多个来源获取数据以进行业务报告,我只能将一个模块应用于 etl 目的。希望你们中的一些人可以就此事提供一些有用的信息。

【问题讨论】:

  • 为什么只能使用一个模块?
  • 我的意思是我只想使用例如 sqlalchemy,而不是将其与 pypyodbc 或特定方言的模块(或库)结合使用 :)
  • 所以这是一种偏好?我很抱歉说你运气不好。 SQLalchemy 不支持悖论。有一个比 pypyodbc (pypi.python.org/pypi/pypxlib/1.6) 更简单的库。您需要创建一个临时环境来将您的数据集合并在一起。例如,将每个数据源复制到一个 sqlite 数据库中,然后您就可以使用一个数据源。
  • 认为可以自定义甚至绕过 odbc ......那么我将不得不走很长的路。谢谢@艾伦

标签: python sqlalchemy


【解决方案1】:

你也许可以做到。访问 SQL Server 的一种方法是通过 PyODBC,因为您有 Paradox 的 ODBC 驱动程序,相同的过程可能会起作用。我使用 Paradox 已经十多年了,但是 IIRC 的 ODBC 驱动程序的工作方式相同。不过,这可能比您想做的还要多。

您需要使用新引擎扩展 SQLalchemy。这是the details of the PyODBC driver for SQL Server;您需要更改相应的详细信息,因此您将拥有paradox+pyodbc 而不是"mssql+pyodbc。

这是一个类似的StackOverflow question,这是一个很好的起点。

如果您通过 ODBC 字符串传递,这是 SQL Server 的 ODBC 字符串示例。

params = urllib.quote_plus("DRIVER={SQL Server Native Client 10.0};SERVER=dagger;DATABASE=test;UID=user;PWD=password")

和an example of a Paradox connection string(显然不完全正确,但它解释了如何适应它):

cnxn = pyodbc.connect(r"Driver={{Microsoft Paradox Driver (*.db )}};Fil=Paradox 5.X;DefaultDir={0};Dbq={0}; CollatingSequence=ASCII;")

我不再有一个 Paradox 数据库来测试这个,所以我不能确定需要做多少工作才能开始。如果您已经有一个有效的 ODBC 连接,那么您已经拥有了所需的一半。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-15
    • 2018-12-25
    • 2015-04-11
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    • 2018-03-26
    相关资源
    最近更新 更多