Sqlalchemy Mixins / und Event Listener

8

Ich versuche zwei neue Dinge auf einmal, so dass die Unterstützung sowohl bei der Vereinfachung als auch bei der Klärung geschätzt wird.

%Vor%

Ich möchte also einen Mix erstellen, den ich in jeder Klasse anwenden kann:

%Vor%

Diese Klasse erbt Funktionen, die bei der Erstellung einen Zeitstempel erstellen und beim Aktualisieren einen Zeitstempel erstellen / ändern.

Beim Import erhalte ich diesen Fehler:

%Vor%

aaaund ich bin an dieser Stelle ratlos.

    
blueblank 05.10.2012, 20:17
quelle

4 Antworten

12

Hier ist, was ich tun würde, um before_insert -Ereignisse anzuhören: füge einen classmethod zu deinem TimeStampMixin hinzu, der die aktuelle Klasse registriert und die Erstellung der Zeit übernimmt.

z. B.

%Vor%

So können Sie:

  1. Erweitern und ändern Sie leicht, worauf Sie hören und was Sie registrieren.
  2. Überschreibe die Methode create_time für bestimmte Klassen
  3. Seien Sie explizit darüber, welche Methoden ihre Zeitstempel haben müssen.

Sie können es einfach verwenden:

%Vor%

Einfach, sehr klar, keine Magie, aber kapselt immer noch ein, wie Sie wollen.

    
Jeff Tratner 05.10.2012, 21:09
quelle
35

Fügen Sie Ihren Listener innerhalb der Klassenmethode an und er wird das Ereignis an die Kindklasse anhängen.

%Vor%     
deBrice 29.11.2012 01:52
quelle
2

Sie können es auch so machen:

%Vor%

und definieren Sie Ihre Klassen wie:

%Vor%     
Raul Gomez 06.10.2012 17:04
quelle
0

Der beste Weg in der modernen SqlAlchemy ist die Verwendung des @listens_for Dekorators mit propagate=True .

%Vor%     
Mike Haboustak 22.05.2017 19:40
quelle

Tags und Links

yii\base\ErrorException
Copied! Copy Stacktrace Search Stackoverflow Search Google Error

PHP Core Warningyii\base\ErrorException

PHP Startup: Unable to load dynamic library 'mongodb.so' (tried: /usr/lib64/php/modules/mongodb.so (/usr/lib64/php/modules/mongodb.so: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/mongodb.so.so (/usr/lib64/php/modules/mongodb.so.so: cannot open shared object file: No such file or directory))

$_GET = [
    'id' => '406658',
    'url' => 'sqlalchemy-mixins-and-event-listener',
];

$_SESSION = [
    '__flash' => [],
];