【问题标题】:failed connect QGIS plugin with access 2007 database using pyodbc使用 pyodbc 将 QGIS 插件与访问 2007 数据库连接失败
【发布时间】:2014-06-24 08:58:16
【问题描述】:

我正在运行 Win 7 32 位并且我使用 python 27,我尝试使用 pyodbc 在我的 QGIS 插件中连接 ms-access 数据库,但是当我启动它时出现以下错误:

 Traceback (most recent call last):
      File "C:/PROGRA~1/QGISDU~1/apps/qgis/./python\qgis\utils.py", line 204, in startPlugin
        plugins[packageName] = package.classFactory(iface)
      File "C:\Users\Mr.Pakde/.qgis2/python/plugins\TestDbase\__init__.py", line 26, in classFactory
        from testdbase import TestDbase
      File "C:/PROGRA~1/QGISDU~1/apps/qgis/./python\qgis\utils.py", line 453, in _import
        mod = _builtin_import(name, globals, locals, fromlist, level)
      File "C:\Users\Mr.Pakde/.qgis2/python/plugins\TestDbase\testdbase.py", line 29, in 
        from testdbasedialog import TestDbaseDialog
      File "C:/PROGRA~1/QGISDU~1/apps/qgis/./python\qgis\utils.py", line 453, in _import
        mod = _builtin_import(name, globals, locals, fromlist, level)
      File "C:\Users\Mr.Pakde/.qgis2/python/plugins\TestDbase\testdbasedialog.py", line 28, in 
        r'DBQ=C:\__tmp\test1.accdb')

错误: ('HY024', "[HY024] [Microsoft][ODBC Microsoft Access Driver] '(unknown)' 不是有效路径。确保路径名拼写正确并且您已连接到文件所在的服务器。(-1023) (SQLDriverConnect); [HY024] [Microsoft][ODBC Microsoft Access Driver] '(unknown)' 不是有效路径。确保路径名拼写正确并且您连接到文件所在的服务器。(-1023)")

我把它放在我的代码中:

from PyQt4 import QtCore, QtGui
from ui_testdbase import Ui_TestDbase
import pyodbc
db = pyodbc.connect(
        r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};' +
        r'DBQ=C:\__tmp\test1.accdb')

class TestDbaseDialog(QtGui.QDialog):
    def __init__(self):
        QtGui.QDialog.__init__(self)
        # Set up the user interface from Designer.
        self.ui = Ui_TestDbase()
        self.ui.setupUi(self)

        Rec_1 = self.ui.btnOke
        QtCore.QObject.connect(Rec_1, QtCore.SIGNAL('clicked()'),self.Compskala)


    def Compskala(self):
        skal1 = self.ui.lineSkal1.text()
        skal2 = self.ui.lineSkal2.text()
        bandskal = ''
        if skal1 == skal2:
            bandskal = 'Kedua Peta dapat dipadukan'

我真的是这方面的新手,谁能帮帮我?

【问题讨论】:

    标签: python-2.7 ms-access-2007 pyodbc qgis


    【解决方案1】:

    用反斜杠替换文件名中的正斜杠似乎可行:

    失败

    >>> db = pyodbc.connect("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};" +
                            "DBQ=C:\__tmp\test.accdb")
    

    Traceback(最近一次调用最后一次):文件“”,第 1 行,in pyodbc.Error: ('HY000', '[HY000] [Microsoft][ODBC Microsoft 访问驱动程序] 不是有效的文件名。 (-1044) (SQLDriverConnect)')

    成功

    >>> db = pyodbc.connect("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};" +
                            "DBQ=C:/__tmp/test.accdb")
    >>> connection.getinfo(pyodbc.SQL_SERVER_NAME)
    'ACCESS'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-18
      • 2011-09-17
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      • 2020-10-20
      相关资源
      最近更新 更多