Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
线程尝试读取或写入虚拟地址python QtSql_Python_Sql Server_Qtsql - Fatal编程技术网

线程尝试读取或写入虚拟地址python QtSql

线程尝试读取或写入虚拟地址python QtSql,python,sql-server,qtsql,Python,Sql Server,Qtsql,我有两个问题——第一个问题(更重要的是)第二次从QGIS Python运行代码时,它失败了,“线程试图读取或写入一个虚拟地址,但它没有相应的访问权限” 第二个问题是,如果我关闭并删除数据库,则使用projectView.show()显示的表为空,但如果我注释掉这些行,则数据显示正确 from PyQt4.QtSql import * from PyQt4.QtGui import * from qgis.gui import * db = QSqlDatabase.addDatabase('Q

我有两个问题——第一个问题(更重要的是)第二次从QGIS Python运行代码时,它失败了,“线程试图读取或写入一个虚拟地址,但它没有相应的访问权限”

第二个问题是,如果我关闭并删除数据库,则使用projectView.show()显示的表为空,但如果我注释掉这些行,则数据显示正确

from PyQt4.QtSql import *
from PyQt4.QtGui import *
from qgis.gui import *

db = QSqlDatabase.addDatabase('QODBC')
if db.isValid():
   db.setDatabaseName('DRIVER={SQL Server};SERVER=%s;DATABASE=%s;UID=%s;PWD=%s;'
                    % ('ServerName',
                      'Database',
                       'username',
                       'password'))   

    #print "db.isValid"

    if db.open():
        #print "success"
        query = db.exec_("""SELECT TOP 100 postal_address as address, EASTING as x, NORTHING as y FROM dbo.POSTAL_ADDRESS WHERE postal_address LIKE('%EX3 %')""")

        projectModel = QSqlQueryModel()
        projectModel.setQuery(query)
        projectView = QTableView()
        projectView.setModel(projectModel)

        projectView.show()    

        QMessageBox.warning(None, "Info", "hello")

        query = db.exec_("""SELECT TOP 100 postal_address as address, EASTING as x, NORTHING as y FROM dbo.POSTAL_ADDRESS WHERE postal_address LIKE('%EX2 %')""")

        projectModel = QSqlQueryModel()
        projectModel.setQuery(query)
        projectView = QTableView()
        projectView.setModel(projectModel)

        projectView.show()    

        #db.close()
        #db.removeDatabase('QODBC')       

    else:
        QMessageBox.warning(None, "Info", "Error")
 else:
    QMessageBox.warning(None, "Info", "Error")

该错误是来自segfault或Windows崩溃的消息,还是来自Python的异常?如果这是个例外,请发布整个回溯,不仅仅是错误字符串。我已经发现它是在query=db.exec\uusdump Summary-------转储文件:qgis-20141218-083144-1364-7108-exported.dmp:C:\Users\usr\AppData\Local\Temp\qgis-20141218-083144-1364-7108-exported.dmp上次写入时间:18/12/2014 08:31:44进程名称:qgis-bin.exe:C:\Program Files\qgisBrighton\bin\qgis-bin.exe进程体系结构:x64异常代码:0xC0000005异常信息:线程试图读取或写入其没有相应访问权限的虚拟地址。堆信息:不存在调用db.exec两次;哪一个崩溃了?同时,由于您的Qt/PyQt/QODBC设置似乎有问题(通常,您用Python编写的任何东西都不会崩溃,除非您使用的是
ctypes
或类似的东西),您是如何安装所有东西的?