AMcoder - javascript, python, java, html, php, sql

SQL Server-ից տվյալների հարցում/առբերում Django-ի միջոցով

Ես բավականին նոր եմ Ջանգոյում: Ես փորձում եմ հարցումներ կատարել SQL սերվերից՝ օգտագործելով Django հավելվածը: Ես ի վիճակի եմ կապվել լռելյայն Django տվյալների բազայի հետ և տվյալներ վերցնել այնտեղից, բայց Django-ն շարունակում է սխալներ թույլ տալ, երբ փորձում եմ հարցումներ կատարել գոյություն ունեցող տվյալների բազայում: (Ներողություն եմ խնդրում այստեղ ֆորմատավորման ժամանակ նահանջային սխալների համար, բայց դա լավ է իմ սցենարներում)

views.py-ը ցույց է տալիս հետևյալ սխալը.

from django.http import HttpResponse
from django.template import Context,Template,RequestContext
from django.shortcuts import render_to_response, render
from django.conf.urls.static import static
from django.contrib import admin
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.template.context_processors import csrf
from ForecastApp.forms import *
from django.core.mail import send_mail
from django.utils.safestring import mark_safe
#from django.db import connection
import os
import csv
import json
import subprocess
from subprocess import *
from operator import itemgetter
from datetime import datetime
import pyodbc
from logging import getLogger
from .models import Actuals
from .models import forecastfuture
ss = forecastfuture.objects.using('default').all()
    print len(ss)
    for row in ss:
        print (row.region) #works fine
tt = Actuals.objects.using('Forecasting').all()
    print len(tt)
        for row in tt:
            print (row.Region)

[Microsoft][SQL Server Native Client 11.0][SQL Server]Սյունակի անվավեր անունը «id»: (207)

Ես կարգավորել եմ routers.py-ը և models.py-ը և settings.py-ը՝ փաստաթղթերի հրահանգներին համապատասխան:

routers.py

class App1Router(object): #pardon my poor indentations here while posting
def db_for_read(self, model, **hints):

    if model._meta.app_label == 'ForecastApp':
        return 'Forecasting'
    return 'default'

def db_for_write(self, model, **hints):

    if model._meta.app_label == 'ForecastApp':
        return 'Forecasting'
    return 'default'

def allow_relation(self, obj1, obj2, **hints):

    if obj1._meta.app_label == 'ForecastApp' and obj2._meta.app_label == 'ForecastApp':
        return True
    # Allow if neither is chinook app
    elif 'ForecastApp' not in [obj1._meta.app_label, obj2._meta.app_label]:
        return True
    return False

def allow_syncdb(self, db, model):
    if db == 'Forecasting' or model._meta.app_label == "ForecastApp":
        return False # we're not using syncdb on our legacy database
    else: # but all other models/databases are fine
        return True

models.py

class Actuals(models.Model):
    date = models.DateTimeField(db_column='Date', blank=True, null=True)
    values = models.FloatField(db_column='Values', blank=True, null=True)
    region = models.CharField(db_column='Region', max_length=50, blank=True, null=True)
    metric = models.CharField(db_column='Metric', max_length=50, blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'actuals'

class migrations(models.Model):
    app =models.CharField(max_length=255)
    name =models.CharField(max_length=255)
    applied = models.DateTimeField()

class forecastfuture(models.Model):
    caseId = models.IntegerField(null=False)
    date = models.DateField(null=False)
    forecast=models.FloatField(null=False)
    metric = models.CharField(max_length=255,null=False)
    region = models.CharField(max_length=255,null=False)

settings.py

DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc', 
        'NAME': 'ForecastAppDjango',   
        'USER': '',                    
        'PASSWORD': '',                
        'HOST': 'abc.com\\sql',        
        'PORT': '1433',                
        'OPTIONS': {
                'host_is_server': True,
                'driver' : 'SQL Server Native Client 11.0',
                'trusted_connection':'yes',

        },
    },

    'Forecasting': {
        'ENGINE': 'sql_server.pyodbc', 
        'NAME': 'Forecasting',         
        'USER': '',                    
        'PASSWORD': '',                
        'HOST': 'abc.com\\sqlt',.
        'PORT': '1433',         
        'OPTIONS': {
                'host_is_server': True,
                'driver' : 'SQL Server Native Client 11.0',
                'trusted_connection':'yes',

        },
    }
}

DATABASE_ROUTERS = ['ForecastApp.routers.App1Router']

Առայժմ ես փորձել եմ՝ manager.py-ը կատարել միգրացիաներ և հաջողությամբ տեղափոխել հրամանները:

Փաստացի աղյուսակը հետևյալն է.

| Date | Values | Region | Metric|
|2012-01-01 00:00:00.000 | 1000 | Region1 | Demand |

manager.py inspectdb --շտեմարանի «Կանխատեսումը» նույնպես լավ էր:

Q1. Արտաքին DB կանխատեսումը չունի առաջնային բանալի: Արդյո՞ք սա պահանջ է: Q2. Ի՞նչ եմ ես սխալ անում իմ views.py-ում կամ models.py-ում:

Նախապես շնորհակալություն ձեր առաջարկների համար:

26.10.2017

  • Այո, առաջնային բանալին ունենալը պահանջ է Django մոդելում: 26.10.2017
  • Ես հասկանում եմ, որ դա պահանջ է Django-ի կողմից ստեղծված տվյալների բազայի համար (իմ դեպքում լռելյայն տվյալների բազա): Բայց արդյոք դա ճիշտ է արտաքին տվյալների բազայի SQL սերվերի հարցումների համար: Խնդրում եմ հաստատել. Ինչպե՞ս կհարցնեք տվյալների բազան, որի վրա դուք չեք վերահսկում: 26.10.2017

Պատասխանները:


1

Q2. Կարծում եմ, որ ձեր աղյուսակները կանխատեսում են ապագան և Actuals-ն ունի տարբեր կառուցվածքի id սյունակ, որը լրացուցիչ է աղյուսակի կանխատեսման ապագայում

26.10.2017
  • Շնորհակալություն արձագանքելու համար: forecastfuture-ը django-ի կողմից ստեղծված տվյալների բազայի (ForecastAppDjango) կողմից ստեղծված աղյուսակ է, իսկ Actuals-ը արտաքին db-ի աղյուսակ է (Կանխատեսում): 26.10.2017
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..