generalisierte insert into sqlalchemy mit Wörterbuch

Ich Baue eine Anwendung in Fläschchen und ich habe mehrere SQLAlchemy-Modelle definiert. Ich habe ein dictionary mit Schlüssel/Wert-Paare für jedes Modell-Typen.

Möchte ich eine generalisierte einfügen über ein dictionary... würde dies erfordern, einen mapper? Ich weiß, dass wtforms.ext.sqlalchemy.orm.model_form() erzeugt ein Objekt mit populate_obj(Modell), so dass es möglich ist. Ich habe durchkämmt, die Dokumentation, aber kann es nicht finden. Ich kann die commit-später, sondern müssen eine Verknüpfung zum Auffüllen der Gegenstand für jetzt. Bitte, hat jemand Fachwissen?

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)
db = SQLAlchemy()
db.init_app(app)

employee_data = {'firstname':'John','lastname':'Smith'}
project_data = {'name':'project1'}

dict_generalised_insert(model=Employee,dictionary=employee_data)
dict_generalised_insert(model=Project,dictionary=project_data)

def dict_generalised_insert(model=None,dictionary={})
    obj = model.model() 
    obj.populate_obj(dictionary) # ???
    return obj

class Employee(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    firstname = db.Column(db.String(80))
    lastname = db.Column(db.String(80))

class Project(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80))
  • Gibt es einen Grund, warum man nicht einfach erstellen Sie eine Instanz Ihrer model-Klassen und abspeichern?
  • Ich bin laden in der via CSV. Ich möchte meine finite-state-Maschine zu sein, so TROCKEN wie möglich.
  • Sehe ich nicht wirklich was, dass hat mit dem Modul die Art und Weise es entworfen wurde. Sie können packen Sie Ihre dict in der Modell-Konstruktor und speichern, fügen Sie es von dort, Sie müssen nicht wiederholen, ein code. Wie es bei mir aussieht erstellen Sie code, Dinge zu tun, die das Modul bereits tut.
  • Ich bin auf der Suche nach einem Wörterbuch zu Modell hinzufügen setter, ein äquivalent zur populate_obj(Modell) gefunden in wtforms.ext.sqlalchemy.orm ich bin mir nicht sicher, wie Sie Sie zum entpacken ein dict in einer Modell-Konstruktor in einer generalisierten Art und Weise (so, dass das Auspacken dict-zu-Modell funktioniert für beide-Angestellter und Projekt)
  • obj = Object(**dict). Dann db.session.add(obj); db.session.commit()
  • vielen Dank, was fehlte, war das ** in **dict

InformationsquelleAutor Richard Lee | 2015-07-31
Schreibe einen Kommentar