Django不像python那样使用pyodbc

时间:2017-08-11 08:04:06

标签: python django pyodbc

我有一个使用pyodbc读取2005 sql server数据库的python脚本:

import pyodbc
con = pyodbc.connect('DRIVER={SQL Server};SERVER=servername;DATABASE=schema;UID=user;PWD=pass')
cursor = con.cursor()
cursor.execute(str.format("SELECT id FROM schema.dbo.mytable WHERE num = {0}", foo.num)

这很好用。

当我尝试在django项目设置中使用相同的参数配置数据库时,我无法从同一个数据库中读取表。

'second_db': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'schema',
        'USER': 'user',
        'PASSWORD': 'pass',
        'HOST': 'servername',

        'OPTIONS': {
            'driver': 'SQL Server',
        },
    },

django项目工作区的某处:

from django.db import connection
cursor = connection.cursor()
cursor.execute(str.format("SELECT id FROM schema.dbo.mytable WHERE num = {0}", obj.num)

我明白了:

[42S02] [Microsoft][SQL Server Native Client 11.0][SQL Server]Invalid object name 'schema.dbo.mytable'. (208) (SQLExecDirectW)

任何人都可以帮助我检测两者之间的区别吗? Django在运行脚本的同一台机器上运行,所以我认为这不是权限问题......

我想使用django连接而不是定义标准游标,因为我更喜欢在django设置中拥有所有数据库设置,而不是在代码周围展开。

1 个答案:

答案 0 :(得分:1)

最后我的问题是我想从辅助数据库中打开游标,而不是默认数据库,所以错误就在这里:

from django.db import connection
cursor = connection.cursor()

应该是:

from django.db import connections  # instead of connection
cursor = connections['second_db'].cursor()  # using the proper db