Python ODBC 连接:不是有效的文件名错误

Posted

技术标签:

【中文标题】Python ODBC 连接:不是有效的文件名错误【英文标题】:Python ODBC connection: not a valid file name error 【发布时间】:2016-11-15 17:33:50 【问题描述】:

我是 Python 新手,我被分配了使用 Python 将所有 MS Access 数据库文件(我们有五个)复制为 CSV 格式的任务。我在 Stack Overflow 上搜索了很多帖子,并一起勾勒出了这个业余 sn-p。我需要查看我的 MS Access 数据库中的文件。有人可以提供帮助吗?

Pyodbc Error - Python to MS Access

open access file in python

import pyodbc

conn_string = ("DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=T:\\DataDump\\7.18.2016 PCR etrakit.accdb") 

conn = pyodbc.connect(conn_string)

cursor = conn.cursor()

cursor.close()
conn.close()

print 'All done for now'

【问题讨论】:

可能是文件名中的空格吗?尝试将文件从 7.18.2016 PCR etrakit.accdb 重命名为 file.accdb 并更新脚本再试一次? 将所有 MS Access 数据库文件复制为 CSV 格式...您确实意识到关系数据库与平面文件文本文件不同吗?您应该更具体地将 MS Access 文件中的所有表/查询导出为 csv 格式 【参考方案1】:

[更新]尝试运行这个

conn_string = ("DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=C:\\T:\\DataDump\\7.18.2016 PCR etrakit.accdb")

改用双反斜杠。

【讨论】:

@Learner 反斜杠字符表示下一个字符在字符串中具有特殊含义。所以破译双反斜杠......第一个反斜杠告诉python准备一个特殊的字符串字符,第二个反斜杠是特殊的字符串字符(在这种情况下是一个反斜杠) 是的,我尝试了您推荐的上述建议,甚至编辑了原始帖子以反映更改,但仍然抛出相同的错误。 @Learner check this 是的,这是我用来勾勒脚本的帖子之一。 conn_string = ("DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=C:\\T:\\DataDump\\7.18.2016 PCR etrakit.accdb" )【参考方案2】:

Per this post:

尝试将其作为单行进行

conn_string = r'DRIVER=Microsoft Access Driver (*.mdb, *.accdb);C:\\T:\\DataDump\\7.18.2016 PCR etrakit.accdb;'

但是,我对您的文件路径感到有些困惑。在您的C:\ 驱动器的根目录上,您有一个名为T: 的目录?

还可能值得注意的是,名称中带有空格的文件路径并不总是按预期处理。另一种方法是尝试转义文件路径中的空格:

conn_string = r'DRIVER=Microsoft Access Driver (*.mdb, *.accdb);C:\\T:\\DataDump\\7.18.2016\ PCR\ etrakit.accdb;'

【讨论】:

是的,谢谢亚伦,那里有一个错字。 C 根不应该在那里。现在,如果您不介意我如何查看该 Access 数据库中的文件。 所以,澄清一下,上述解决方案对您有用吗?你能具体说明什么有效吗?第一个或第二个解决方案(带有转义空格)?还是只是删除了文件路径的 C:\ 部分?至于访问文件,鉴于您现在连接成功,这是第二个主题的基础。 是的,需要删除 C: 根文件夹。

以上是关于Python ODBC 连接:不是有效的文件名错误的主要内容,如果未能解决你的问题,请参考以下文章

通过 ODBC 使用 Python 连接到 MySQL 数据库的问题

Oracle ODBC 读取失败并出现左连接

与 Informix 数据库的 ODBC 连接

连接 jdbc odbc 驱动程序时出错

mySQL 命令行有效,但 ODBC 和工作台无效

Linux 上的 SQL Server:来自 Windows 的 ODBC 连接有效,应用程序无效