2013-08-14 2 views
0

Мне нужно отфильтровать данные из базы данных SQL Server 2000 Enterprise Edition, которая не является моей, поэтому я не могу ее изменить.Django на фильтрах базы данных SQL Server

Моя проблема заключается в следующем:

mymodel.objects.get(id=1) 

работает отлично

mymodel.objects.filter(id=1) 

возвращение пустой QuerySet '[]' и

mymodel.objects.all() 

сделать то же самое.

Это MyProject/settings.py

DATABASES = { 
    'default': { 
     'ENGINE': 'sql_server.pyodbc' , 
     'NAME': 'QuaniVB',    
     'USER': 'sa',     
     'PASSWORD': '****',   
     'PORT': '1433' ,    
     'OPTIONS': { 
        'driver': 'FreeTDS', 
        'dsn' : 'MSSQL-QUANI', 
     } 
    }, 
    'emanager2': { 
     'ENGINE': 'sql_server.pyodbc' , 
     'NAME': 'emanager',    
     'USER': 'sa',     
     'PASSWORD': '******',    
     'HOST' : 'emanager2' , 
     'PORT': '1433' , 
     'OPTIONS': { 
        'dsn' : 'MSSQL-EMANAGER2', ## as in /etc/odbc.ini 
     } 
    }, 
} 

это модель

class Medico(models.Model): 
    tipo_medico = models.TextField(db_column='TIPO_MEDICO', blank=True) 
    id_medico = models.AutoField(primary_key=True, db_column='ID_MEDICO') 
    cod_regionale_medico = models.TextField(db_column='COD_REGIONALE_MEDICO', blank=True) 
    cognome = models.TextField(db_column='COGNOME', blank=True) 
    nome = models.TextField(db_column='NOME', blank=True) 
    codfisc_medico = models.TextField(db_column='CODFISC_MEDICO', blank=True) 
    reg_ulss_appartenenza = models.TextField(db_column='REG_ULSS_APPARTENENZA', blank=True) 
    cod_individuale = models.TextField(db_column='COD_INDIVIDUALE', blank=True) 
    id_comune_ambulatorio = models.DecimalField(decimal_places=0, null=True, max_digits=18, db_column='ID_COMUNE_AMBULATORIO', blank=True) 
    cod_unita_med = models.TextField(db_column='COD_UNITA_MED', blank=True) 
    class Meta: 
     db_table = 'MEDICO' 

, что мой 'питон manage.py оболочки' тест

>>> from myapp.models import Medico 
>>> med = Medico.objects.using('emanager2') 
>>> med.get(id_medico= 11746).cognome 
>>> med.filter(id_medico= 11746) 
[] 
>>> med.all() 
[] 
>>> 

Любые предложения по

ответ

0

Попробуйте найти т сырой SQL, что Django генерирует

>>> from django.db import connection 
>>> from myapp.models import Medico 
>>> Medico.objects.using('emanager2').get(id=1) # you said this one works 
<Medico object> 
>>> connection['emanager2'].queries 
[{u'sql': u'YOUR SQL WILL BE HERE', u'time': u'0.117'}] 
>>> Medico.objects.using('emanager2').all() # you said this one didn't work 
[] 
>>> connection['emanager2'].queries 
... more SQL printed here 
+0

моих conncection запросов выглядит следующим образом ... >>> печать connection.queries [] пустой список – francesco

+0

@francesco Я обновил ответ. Кроме того, вам необходимо убедиться, что DEBUG включен для этого. –

+0

Однако, если я выполняю в другом клиенте результат >>> Medico.objects.using ('emanager2'). Query он извлекает все нужные записи – francesco

Смежные вопросы