【问题标题】:Trouble connecting to SQL server with python无法使用 python 连接到 SQL Server
【发布时间】:2015-08-29 12:02:18
【问题描述】:

我最近在我的 PC 上安装了 Microsoft SQL Server 2014,因为我想为我正在构建的 Web 应用程序创建一个数据库(我已经学习 Python 一年并且对 SQLite 有非常基本的经验)。

在安装 SQL Server 2014 并创建一个名为 Users 的数据库后,我只是想对我的数据库运行一些非常基本的命令,但我一遍又一遍地遇到第一个障碍!

我已经安装了 pymssql 和 pyodbc 并尝试使用它们直接运行命令但失败了。 (例如,pymssql 给了我一个 TypeError:当我设置变量 conn = pymssql.connect(server, user, password, "tempdb") 时,'NoneType' 类型的参数不可迭代

我最近的尝试是使用 SQLalchemy 来实现我期待已久的与 SQL 数据库的连接。但是,安装后,它会因以下错误而失败: "sqlalchemy.exc.OperationalError: (pymssql.OperationalError) (20009, 'DB-Lib 错误消息 20009, 严重性 9:\n无法连接: Adaptive Server 不可用或不存在\nNet-Lib 在未知错误期间出错(10035)\n')"

我需要回答的问题是,如何开始使用 SQLalchemy 与我的数据库通信?

我使用的代码如下: 从 sqlalchemy 导入 *

    engine = create_engine('mssql+pymssql://Han & Lew:@SlugarPlum:1433/Users')

    m = MetaData()

    t = Table('t', m,
            Column('id', Integer, primary_key=True),
            Column('x', Integer))

    m.create_all(engine)

是的,我的电脑叫做 SlugarPlum。用户是 Han & Lew。我的服务器叫做THELROYSERVER。 DSN = 1433。没有密码。 (我不知道我在网上提供这些信息是否明智,但我拥有的数据并不敏感,所以我想值得一试。)

另外,如果有人可以将我引导到 Python-SQL 服务器的超级初学者资源,那将是非常棒的,因为我被它看起来多么复杂而打败了!

【问题讨论】:

  • 让您使用 SQL Server Studio Manager 确认您的凭据工作?
  • 感谢您回复我。我已经登录并使用了管理控制台并拥有 Microsoft 登录等。

标签: python sql-server sqlalchemy pyodbc pymssql


【解决方案1】:

这是一个连接函数和通过 pyodbc 连接的示例。通过 pymssql 连接应该像格式化 pymssql 的连接字符串一样简单。我提供了 Windows 和 Linux 选项,但仅在 Linux 上进行了测试。希望对你有帮助。

def sqlalchemy_connect(connect_string): 
    """ Connect to the database via ODBC, start SQL Alchemy engine. """

    def connect():
        return pyodbc.connect(connect_string, autocommit=True)

    db = create_engine('mssql://', creator=connect)
    db.echo = False

    return db

def main():
    global DBCONN

    # Linux with FreeTDS
    connect_string = "DRIVER={FreeTDS};SERVER=<server name>;PORT=<port num>;DATABASE=<db>;UID=<user>;PWD=<password>;TDS_Version=<version num>;"

    # Windows with SQL Server
    connect_string = "DRIVER={SQL Server};SERVER=<server name>;PORT=<port num>;DATABASE=<db>;UID=<user>;PWD=<password>;"

    DBCONN = sqlalchemy_connect(connect_string)


if __name__ == "__main__":
    main()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 2016-11-08
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多