Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Können Django-Modelle MySQL-Funktionen verwenden?

Statt beim Laden des Modells können Sie eine Eigenschaft in Ihrem Modell erstellen, und wenn auf die Eigenschaft zugegriffen wird, kann sie die Datenbank lesen:

def _get_foobar(self):
    if not hasattr(self, '_foobar'):

        cursor = connection.cursor()
        self._foobar = cursor.execute('SELECT AES_DECRYPT(fieldname, password) FROM tablename')[0]
    return self._foobar
foobar = property(_get_foobar)

Nach dem Laden können Sie nun auf mything.foobar verweisen , und beim ersten Zugriff wird die Entschlüsselung aus der Datenbank abgerufen und für spätere Zugriffe gespeichert.

Dies hat auch den Vorteil, dass, wenn ein Teil Ihres Codes keine Verwendung für die Entschlüsselung hat, dies nicht geschieht.