连接字符串中的 PYODBC 传递变量
Posted
技术标签:
【中文标题】连接字符串中的 PYODBC 传递变量【英文标题】:PYODBC pass variable in connection string 【发布时间】:2021-09-07 17:40:24 【问题描述】:我正在尝试使用 pyodbc 连接到 MS Access 数据库 (.mdb)。以下连接字符串正常工作:
conn = pyodbc.connect(r'Driver=Microsoft Access Driver (*.mdb, *.accdb);'
r'DBQ=\\abc123.org\Team\Resources\Inputs\Accounts.mdb;')
我需要遍历几个文件,所以我试图为文件路径传递一个变量。变量将来自列表,但作为示例:
file_path1 = '\\abc123.org\Team\Resources\Inputs\Accounts.mdb'
conn = pyodbc.connect(r'Driver=Microsoft Access Driver (*.mdb, *.accdb);DBQ=;').format(file_path1)
我收到以下错误: 错误: ('HY000', '[HY000] [Microsoft][ODBC Microsoft Access Driver] 不是有效的文件名。(-1044) (SQLDriverConnect); [HY000] [Microsoft][ODBC Microsoft Access Driver] 不是有效的文件名称。(-1044)')
我在尝试时收到同样的错误:
conn = pyodbc.connect(r'Driver=Microsoft Access Driver (*.mdb, *.accdb);DBQ=%s;') % file_path1
对于如何将文件路径作为连接字符串中的变量传递的任何帮助,不胜感激,谢谢!
【问题讨论】:
只是文件路径file_path1 = '\\abc123.org\Team\Resources\Inputs\Accounts.mdb'
前面少了r the rawstring
吗?你查了吗?
我尝试了以下方法:file_path1 = r'\\abc123.org\Team\Resources\Inputs\Accounts.mdb' 仍然收到相同的错误
【参考方案1】:
我想我明白了。
file_path1 = '\\abc123.org\Team\Resources\Inputs\Accounts.mdb'
conn = pyodbc.connect(r'Driver=Microsoft Access Driver (*.mdb, *.accdb);DBQ=;'.format(file_path1))
#^ format method is call on the string
你能看出区别吗?
您所做的是在connect
方法上调用格式。
您第二次尝试也有同样的问题
conn = pyodbc.connect(r'Driver=Microsoft Access Driver (*.mdb, *.accdb);DBQ=%s;' % file_path1)
#^ I have moved the parenthesis
【讨论】:
【参考方案2】:谢谢@Paulo - 我使用你的回复和 pathlib 来解决这个问题:
import pathlib
file_path1 = pathlib.Path(r'\\abc123.org\Team\Resources\Inputs\Accounts.mdb')
conn = pyodbc.connect(r'Driver=Microsoft Access Driver (*.mdb, *.accdb);DBQ=%s;' % file_path1)
【讨论】:
以上是关于连接字符串中的 PYODBC 传递变量的主要内容,如果未能解决你的问题,请参考以下文章
SqlAlchemy 等效于使用 FreeTDS 的 pyodbc 连接字符串