【问题标题】:How to connect to a SQL Server database in Anaconda如何在 Anaconda 中连接到 SQL Server 数据库
【发布时间】:2013-12-14 23:45:51
【问题描述】:

我对 Python 和一般编程很陌生,所以请多多包涵。在我的工作中,我安装了 Anaconda(Python 版本 2.7)并希望连接到 Microsoft SQL Server 数据库,最好使用 ODBC。关于这个任务,我有很多问题:

  • 我无法使用 sqlite3 或 sqlalchemy 连接到 SQL Server 数据库是否正确?我需要一个像pyodbc这样的模块吗?对为什么会这样的简要解释将不胜感激。

  • 编辑:删除了与在 anaconda 中安装 pyodbc 相关的问题,因为我发现了这一点(通过阅读 Cannot Install Python Modules after Installing Anaconda

非常感谢您的帮助!如果我的任何问题/任何其他细节需要澄清,请不要犹豫。谢谢

【问题讨论】:

    标签: python sql-server odbc anaconda


    【解决方案1】:

    我不使用 Anaconda,但我使用各种数据库和 ODBC。首先,您可以尝试是否安装了odbc 模块。它是 pywin32 包 (http://sourceforge.net/projects/pywin32/files/) 的一部分,并包含在 ActiveState Python 发行版中。其他发行版可以单独安装。只需尝试:

    import odbc
    db = odbc.odbc('dsn/user/password')
    

    您也可以尝试使用您提到的pyodbc。有适用于 Windows 的预编译版本,我认为它适用于您的 Anaconda 环境。安装后试试:

    import pyodbc
    db = pyodbc.connect('Driver={SQL Server Native Client 10.0};Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;')
    

    您可以在http://www.connectionstrings.com/找到更多连接字符串

    编辑:

    您的ODBC驱动程序的bitness似乎有问题。

    尝试运行此程序以查看 ODBC 管理器可以看到哪些源:

    import odbc
    
    source =  odbc.SQLDataSources(odbc.SQL_FETCH_FIRST)
    while source:
        print(source)
        source =  odbc.SQLDataSources(odbc.SQL_FETCH_NEXT)
    

    【讨论】:

    • 感谢您的意见! Pywin32 是 Anaconda 包的一部分,所以我会在周一上班时尝试连接 odbc 模块。我还有一个问题:我有我要连接的 sql 服务器的 dsn 和用户名,是否可能不需要密码?如果是这样,我如何在您建议的连接字符串中表示这一点,odbc.odbc('dsn/user/password')
    • 将密码留空:db = odbc.odbc('DSN/user/')。对于 MS Access DSN=northwind,我可以使用:db = odbc.odbc('northwind//')db = odbc.odbc('northwind')
    • 我不知道你打算用数据库做什么,但pydobcodbc 更先进。例如pyodbc 填充SELECT 返回的记录集中的description 字段。
    • 好的,很好。我几乎只需要从数据库中复制一些表。我会在星期一试试这个并报告它是否有效!
    • 当我尝试时:import odbc db=odbc.odbc('DSN') 我收到以下错误消息:Traceback(最近一次调用最后一次):italic_File "",第 1 行,在 dbi.internalError: [Microsoft][ODBC Driver Manager] 给定的 DSN 包含驱动程序的体系结构和 LOGIN 中的程序之间的错位。_italic 我已经翻译了丹麦语错误消息中的最后一句...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    相关资源
    最近更新 更多