PYODBC 在连接字符串中传递变量

PYODBC pass variable in connection string

我正在尝试使用 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'

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 

谢谢@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)