【问题标题】:connect to SQL Server using SQL alchemy without using DATABASE name使用 SQL alchemy 连接到 SQL Server,而不使用 DATABASE 名称
【发布时间】:2013-09-30 20:59:28
【问题描述】:

我可以使用 SQL 数据库名称连接到 SQL Server,但我的要求是我需要连接到 sql server 而不连接到数据库。

我有以下信息 端口号、实例名称、数据库用户/密码、IP 地址。

我当前的命令是这个

engine_handle = create_engine('mssql+pyodbc://sa:pass@<IP address>/master', echo=False)

现在我可以连接了,因为我已经给出了 db 名称 - master 但如果我删除 db 名称并给出实例名称或完全保留它。我会收到以下错误。

"engine = create_engine('mssql+pyodbc://sa:pass@IP 地址', echo=True)"

return self.dbapi.connect(*cargs, **cparams) DBAPIError: (Error) ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)') None None

如果我可以使用实例名称而不是数据库名称进行连接,那就没问题了。

感谢任何帮助。

【问题讨论】:

    标签: python sql-server sqlalchemy pyodbc


    【解决方案1】:

    使用最初适合您的网址。

    engine_handle = create_engine('mssql+pyodbc://sa:pass@<IP address>/master', echo=False)
    

    然后你可以发出CREATE DATABASE命令,或者你需要做的任何其他操作。

    当您省略数据库名称时,sqlalchemy 正在寻找以您指定的 IP 地址命名的 DSN。当然,DSN 不存在,会抛出异常。您必须使用有效的连接 URL,例如记录在案的 here

    关于不想连接到数据库的评论 - 每次连接到 SQL Server 时,您的连接都必须为连接设置一些数据库。创建时,您的登录名已分配默认数据库(如果未指定,则使用 master)。

    【讨论】:

    • 如果我想在连接到 sql server 后创建一个新的数据库怎么办。此外,我并不是说我不想连接到任何数据库,但我可以连接到数据库实例而不是数据库。由于我们使用实例名称来连接到数据库,以防 Oracle,但是,对于 MS,我无法这样做。
    • 使用CREATE DATABASE 语法创建一个新的数据库。连接中指定的数据库无关紧要。
    • 抱歉,没听懂。我对 DB 和 SQL Alchemy 都很陌生。你想让我把 Create_database 命令放在 url 中还是其他地方?
    • 好的,所以如果我理解正确,我必须连接到默认数据库或其他数据库才能连接到 sql server,但我必须始终指定一些数据库。非常感谢您清除它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 2015-10-30
    • 2011-11-18
    相关资源
    最近更新 更多