флешка сохранится после запроса с одним-многими контактами в базе данных через sqlalchemy - PullRequest
0 голосов
/ 16 февраля 2019

Я пытался сохранить объект с отношением один ко многим в базу данных с помощью sqlalchemy.

Если запрос json достигает метода post, внешние ключи заполняются нулем.Я что-то упустил очевидное?

мой класс models.py:

from datetime import datetime
from config import db, ma


class ActionServer(db.Model):
    __tablename__="actionserver"
    id = db.Column(db.Integer, primary_key=True)
    timestamp = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
    returncode = db.Column(db.Integer)
    #softwareID = db.Column(db.Integer)
    softwareID = db.Column(db.Integer, db.ForeignKey('software.id'))
    serverID = db.Column(db.Integer, db.ForeignKey('server.id'))
    actionID = db.Column(db.Integer, db.ForeignKey('actions.id'))
    comment = db.Column(db.String(64))


class Software(db.Model):
    __tablename__ = "software"
    id = db.Column(db.Integer, primary_key=True)
    versionNumber = db.Column(db.Integer)
    versionInfo = db.Column(db.String(64))
    serverActions = db.relationship('ActionServer', backref='software', lazy=True)

class Server(db.Model):
    __tablename__ = "server"
    id = db.Column(db.Integer, primary_key=True)
    ipAdress = db.Column(db.String(32))
    certificate = db.Column(db.String(64))
    # systemID = db.Column(db.Integer, db.ForeignKey('system.id'))
    # softwareID = db.Column(db.Integer, db.ForeignKey('software.id'))
    serverActions = db.relationship('ActionServer', backref='server', lazy=True)


class Actions(db.Model):
    __tablename__ = "actions"
    id = db.Column(db.Integer, primary_key=True)
    type = db.Column(db.String(64))
    serverActions = db.relationship('ActionServer', backref='actions', lazy=True)


class ActionServerSchema(ma.ModelSchema):
    class Meta:
        model = ActionServer
        sql_session = db.session


class SoftwareSchema(ma.ModelSchema):
    class Meta:
        model = Software
        sql_session = db.session


class ServerSchema(ma.ModelSchema):
    class Meta:
        model = Server
        sql_session = db.session


class ActionSchema(ma.ModelSchema):
    class Meta:
        model = Actions
        sql_session = db.session

и это мой метод записи:

def create(serveraction):
    returncode = serveraction.get("returncode")
    softwareID = serveraction.get("softwareID")
    serverID = serveraction.get("serverID")
    actionID = serveraction.get("actionID")
    comment = serveraction.get("comment")

    schema = ActionServerSchema()
    new_serveraction = schema.load(serveraction, session=db.session).data
    db.session.add(new_serveraction)
    db.session.commit()
    data = schema.dump(new_serveraction).data

    return data, 201

Запросы get уже работают, выводятся внешние ключи, но.

Переменные заполняются правильными значениями при запуске метода (serverID = 3).

Спасибо за помощь!

...