Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.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
Django pyodbc 无法使用django pyodbc连接到旧数据库_Django Pyodbc - Fatal编程技术网

Django pyodbc 无法使用django pyodbc连接到旧数据库

Django pyodbc 无法使用django pyodbc连接到旧数据库,django-pyodbc,Django Pyodbc,我已安装django pyodbc并将我的数据库设置配置为: 开发人员:WindowsXP(64位)、Python3.3、MDAC2.7 数据库:远程MSSQL 2008 DATABASES = { 'default': { 'ENGINE': 'django_pyodbc', 'HOST': 'my.server.com', 'PORT': '14330', 'USER': 'xxx500', 'PASSW

我已安装django pyodbc并将我的数据库设置配置为:

  • 开发人员:WindowsXP(64位)、Python3.3、MDAC2.7
  • 数据库:远程MSSQL 2008

    DATABASES = {
        'default': {
            'ENGINE': 'django_pyodbc',
            'HOST': 'my.server.com',
            'PORT': '14330',
            'USER': 'xxx500',
            'PASSWORD': 'passw',
            'NAME': 'xxx500',
            'OPTIONS': {
                'host_is_server': True
            },
        }
    }
    
  • 我可以远程登录到服务器,我可以通过第三方GUI Aqua Data Studio访问数据库-因此我知道没有登录问题的防火墙问题

    当我尝试运行此命令来内省遗留数据库时,我得到了以下错误

    (myProject) :\Users\...>python manage.py inspectdb
    Traceback (most recent call last):
      File "manage.py", line 10, in <module>
        execute_from_command_line(sys.argv)
      File "C:\Python33\lib\site-packages\django\core\management\__init__.py", line 399, in execute_from_command_line
        utility.execute()
      File "C:\Python33\lib\site-packages\django\core\management\__init__.py", line 392, in execute
        self.fetch_command(subcommand).run_from_argv(self.argv)
      File "C:\Python33\lib\site-packages\django\core\management\base.py", line 242, in run_from_argv
        self.execute(*args, **options.__dict__)
      File "C:\Python33\lib\site-packages\django\core\management\base.py", line 285, in execute
        output = self.handle(*args, **options)
      File "C:\Python33\lib\site-packages\django\core\management\base.py", line 415, in handle
        return self.handle_noargs(**options)
      File "C:\Python33\lib\site-packages\django\core\management\commands\inspectdb.py", line 27, in handle_noargs
        for line in self.handle_inspection(options):
      File "C:\Python33\lib\site-packages\django\core\management\commands\inspectdb.py", line 40, in handle_inspection
        cursor = connection.cursor()
      File "C:\Python33\lib\site-packages\django\db\backends\__init__.py", line 157, in cursor
        cursor = self.make_debug_cursor(self._cursor())
      File "C:\Python33\lib\site-packages\django_pyodbc\base.py", line 280, in _cursor
        autocommit=autocommit)
    pyodbc.Error: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied. (17) (SQLDriverConnect)')
    
    (myProject):\Users\…>python manage.py inspectdb
    回溯(最近一次呼叫最后一次):
    文件“manage.py”,第10行,在
    从命令行(sys.argv)执行命令
    文件“C:\Python33\lib\site packages\django\core\management\\ uuuu init\uuuu.py”,第399行,从命令行执行
    utility.execute()
    文件“C:\Python33\lib\site packages\django\core\management\\uuuu init\uuuuu.py”,第392行,在execute中
    self.fetch_命令(子命令)。从_argv(self.argv)运行_
    文件“C:\Python33\lib\site packages\django\core\management\base.py”,第242行,运行于\u argv
    self.execute(*args,**选项._dict__;
    文件“C:\Python33\lib\site packages\django\core\management\base.py”,第285行,执行
    输出=self.handle(*args,**选项)
    文件“C:\Python33\lib\site packages\django\core\management\base.py”,第415行,位于句柄中
    返回self.handle\u noargs(**选项)
    文件“C:\Python33\lib\site packages\django\core\management\commands\inspectdb.py”,第27行,在handle\u noargs中
    对于在线自检,处理检查(选项):
    文件“C:\Python33\lib\site packages\django\core\management\commands\inspectdb.py”,第40行,在handle\u inspection中
    cursor=connection.cursor()
    游标中的文件“C:\Python33\lib\site packages\django\db\backends\\ uuuuu init\uuuuuu.py”,第157行
    cursor=self.make\u debug\u cursor(self.\u cursor())
    文件“C:\Python33\lib\site packages\django\u pyodbc\base.py”,第280行,在\u游标中
    自动提交=自动提交)
    pyodbc.Error:('08001','[08001][Microsoft][ODBC SQL Server驱动程序][DBNETLIB]SQL Server不存在或访问被拒绝。(17)(SQLDriverConnect)'
    
    我错过了什么?希望能得到一些反馈。
    谢谢

    我做了以下更改:


    得到了utf-8错误,需要注释掉django_pyodbc/base.py文件中的第364-367行。

    我认为这不是您真正想要使用的解决方案;修改django pyodbc的代码不是一个好主意。也就是说,请确保您使用的是django pyodbc的最新分支,当前可以在以下位置找到:

    下面是settings.py的一个DB配置示例,我已经在以下平台上使用了它(针对Linux的w/FreeTDS/UnixODBC):

    • 视窗7
    • 在Vagrant下作为虚拟机的Ubuntu
    • 用于本地开发的Mac OS/X
    • RHEL 5+6
    以下是配置:

    DATABASES = {
        'default': {
            'ENGINE': 'django_pyodbc',
            'NAME': 'db_name',
            'USER': 'db_user',
            'PASSWORD': 'your_password',            
            'HOST': 'database.domain.com,1433',
            'PORT': '1433',
            'OPTIONS': {
                'host_is_server': True,
                'autocommit': True,
                'unicode_results': True,
                'extra_params': 'tds_version=8.0'
            },
        }
    }
    

    您需要将驱动程序添加到数据库后端

    DATABASES = {
        'default': {
          .......
          'OPTIONS': {
           .......
           'driver' : 'SQL Server',
           .......
           },
        }
      }
    
    绳子。要使用的ODBC驱动程序。Windows上的默认值为“SQL Server”,其他平台上的默认值为“FreeTDS”

    DATABASES = {
        'default': {
            'ENGINE': 'django_pyodbc',
            'NAME': 'db_name',
            'USER': 'db_user',
            'PASSWORD': 'your_password',            
            'HOST': 'database.domain.com,1433',
            'PORT': '1433',
            'OPTIONS': {
                'host_is_server': True,
                'autocommit': True,
                'unicode_results': True,
                'extra_params': 'tds_version=8.0'
            },
        }
    }
    
    DATABASES = {
        'default': {
          .......
          'OPTIONS': {
           .......
           'driver' : 'SQL Server',
           .......
           },
        }
      }