You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pyodbc连接含{特殊字符的Access数据库失败求助

解决pyodbc连接含{的Access数据库密码问题

问题描述

使用pyodbc连接带密码保护的Access数据库,密码由文件名生成(示例:abc{123),连接字符串格式正确,但执行连接时触发错误:

Error: ('HY000', "[HY000] [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x5f80 Thread 0x5a54 DBC 0x96f3be58
Jet'. (63) (SQLDriverConnect)")

排查确认:问题源于Access ODBC驱动的连接字符串解析逻辑,而非Python字符串构造;{、%这类特殊字符会触发错误,无特殊字符的密码可正常连接。

已尝试的无效写法

  • ...;{PWD=abc{123}
  • ...;'PWD=abc{123'
  • ...;PWD=abc{{123
  • ...;PWD=abc'{123
  • ...;PWD={abc'{123}
  • ...;PWD={abc{{123}

正确解决方案

针对含{的密码,需遵循Access ODBC驱动的双重转义规则:

  1. 密码中的单个{替换为{{(双写转义)
  2. 用大括号{}包裹整个转义后的密码

对应示例密码的正确代码:

import pyodbc
conn_str = r"DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\user\PW issue\test.accdb;PWD={abc{{123}}"
conn = pyodbc.connect(conn_str)

原理

ODBC连接字符串中,大括号用于标记包含特殊语法字符的参数值,防止驱动将其误判为连接字符串的分隔符;参数值内部的大括号必须双写,才能被驱动识别为普通字符,否则会触发语法解析错误,导致临时DSN创建失败。

内容的提问来源于stack exchange,提问作者balintkovacs14

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 18:55:56