python(10) : python SQLAlchemy sqlserver(pyodbc.Error) (‘01000‘, “[01000] [unixODBC][Driver Manager]

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

sqlalchemy.exc.DBAPIError: (pyodbc.Error) ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'SQL Server' : file not found (0) (SQLDriverConnect)")

centos python SQLAlchemy 连接sqlserver报错

系统: CentOS Linux release 8.5.2111

解决:

yum remove unixODBC

curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo
ACCEPT_EULA=Y yum install msodbcsql17

连接参数

app.config['SQLALCHEMY_DATABASE_URI'] = 'mssql+pyodbc://username:password@your_server_name/your_database_name?driver=ODBC+Driver+17+for+SQL+Server'
db = SQLAlchemy(app)

Windows环境连接参数

app.config['SQLALCHEMY_DATABASE_URI'] = 'mssql+pyodbc://username:password@your_server_name/your_database_name?driver=SQL+Server'
db = SQLAlchemy(app)

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 如何使用 Python 中的 `pyodbc` 和 `SQLAlchemy` 连接到 SQL Server #### 使用 `pyodbc` 连接 SQL Server 要通过 `pyodbc` 实现与 SQL Server 的连接,通常需要配置 ODBC 驱动程序并提供正确的连接字符串。以下是基于引用的内容实现的一个典型例子: ```python import pyodbc # 定义连接字符串 connection_string = ( r'DRIVER={ODBC Driver 17 for SQL Server};' r'SERVER=your_server_name;' r'DATABASE=your_database_name;' r'UID=your_username;' r'PWD=your_password;' ) try: # 建立连接 connection = pyodbc.connect(connection_string) cursor = connection.cursor() # 执行查询 result = cursor.execute("SELECT @@VERSION").fetchone() print(f"Database Version: {result}") except Exception as e: print(f"Error connecting to database: {e}") finally: if 'cursor' in locals(): cursor.close() if 'connection' in locals(): connection.close() ``` 上述代码展示了如何定义一个标准的连接字符串[^1],并通过它建立到 SQL Server 的连接。注意,在实际环境中需替换占位符(如 `your_server_name`, `your_database_name` 等)为真实值。 如果遇到错误 `[01000][unixODBC][Driver Manager]Can't open lib ...`,这可能是因为缺少必要的 ODBC 驱动程序或者路径未正确设置于环境变量中[^5]。解决方法之一是在 Linux 上确认 `/etc/odbcinst.ini` 文件已正确定义驱动位置,并将其目录加入 `$LD_LIBRARY_PATH` 或者修改 `/etc/profile` 来永久生效。 --- #### 使用 `SQLAlchemy` 连接 SQL Server 对于更复杂的 ORM 场景,可以借助 SQLAlchemy 提供更高层次的操作接口。下面是一个简单的示例来展示其基本用法: ```python from sqlalchemy import create_engine, text # 构建连接 URL (适用于 Windows 平台下的 FreeTDS 或 Microsoft ODBC Drivers) engine_url = "mssql+pyodbc://username:password@server/database?driver=ODBC+Driver+17+for+SQL+Server" try: engine = create_engine(engine_url) with engine.connect() as connection: query_result = connection.execute(text("SELECT TOP 1 * FROM your_table")) for row in query_result: print(row) except Exception as error: print(f"An exception occurred while trying to connect via SQLAlchemy: {error}") ``` 此脚本利用了 SQLAlchemy 创建引擎对象的功能[^4],其中指定使用的驱动名称以及完整的认证参数均嵌入到了 URI 字符串里。同样需要注意的是,这里的用户名、密码和服务端地址都需要替换成具体的生产数据。 另外值得注意的一点是,当采用 SQLAlchemy 结合 PyODBC 方式工作时,确保所选版本兼容性良好是非常重要的——比如这里提到过的组合:Python 2.7(32位),Windows 7 OS 下运行着特定版次的组件集合。 --- #### 测试 SQL 查询执行情况 一旦成功建立了数据库会话,则可以通过发送简单命令验证连通性和功能正常与否。例如尝试获取服务器当前时间戳或查看表结构元信息等基础操作即可满足初步需求[^3]: ```python query = """SET NOCOUNT ON; SELECT GETDATE();""" timestamp = crsr.execute(query).fetchval() print(f"The current timestamp from DB is: {timestamp}.") ``` 以上片段演示了一个额外的小技巧—关闭计数返回以减少不必要的网络流量消耗;同时调用了 `.fetchval()` 方法直接提取单个单元格的结果而非整个结果集列表形式呈现出来更加简洁明了。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值