[PYTHON] Ich berührte "Orator" und machte mir eine Notiz

Redner Übersicht

Der in diesem Memo geschriebene Bereich

Memodetails

DB-Einstellungen

Geben Sie das Verzeichnis und die Datenbank an. Derzeit werden drei DBs unterstützt: PostgreSQL, MySQL und SQLite. Legen Sie Treiber, Benutzer (DB-Benutzer), Kennwort (DB-Kennwort), Datenbank (DB-Speicherort) usw. fest. Im Fall von SQLite kann dies beispielsweise wie folgt definiert werden.

DATABASES = {                                                                   
   'development': {                                                            
        'driver': 'sqlite',  
        'database': '/tmp/authgate.sqlite'
    }
}

Eine Tabelle erstellen

Sie können eine Instanz von DatabaseManager erstellen und mit dieser Instanz auf die Datenbank zugreifen. Übergeben Sie die DB-Definition beim Erstellen einer Instanz.

from orator import DatabaseManager

DATABASES = {                                                                   
   'development': {                                                            
        'driver': 'sqlite',  
        'database': '/tmp/authgate.sqlite'
    }
}
db = DatabaseManager(DATABASES)

Sie können DB mit Schema Builder bearbeiten. Erstellen Sie eine Schema-Instanz, indem Sie eine Instanz von DatabaseManager übergeben. Verwenden Sie danach die Schema-Instanz, um die Methode aufzurufen, die der Spalte der Tabelle entspricht, die Sie definieren möchten.

create-database.py


from orator import DatabaseManager
from orator import Schema

DATABASES = {                                                                   
   'development': {                                                            
        'driver': 'sqlite',  
        'database': '/tmp/authgate.sqlite'
    }
}

db = DatabaseManager(DATABASES)
schema = Schema(db)

with schema.create('samples') as table:
    table.increments('id')
    table.string('string_column').nullable()
    table.integer('integer_column')

Wenn die oben erstellte Datei ausgeführt wird, wird eine auf der Definition basierende Datenbank erstellt.

$ python create-database.py

Weitere Informationen finden Sie im Abschnitt Schema Builder von Orator. http://orator.readthedocs.org/en/latest/schema_builder.html)を参照。

Erstellen einer Klasse, die ein Modell sein wird

Grundlegende Syntax

Erstellen Sie, indem Sie die Model-Klasse von Orator erben. Das folgende Beispiel ist eine Klasse, die der Tabelle ** samples ** mit zwei Spalten zugeordnet ist, ** string_column ** und ** integer_column **, die zuvor erstellt wurden.

class Sample(Model):                                                              
    __table__ = 'samples'                                                                                            
    __fillable__ = ['string_column'] 
    __guarded__ = ['integer_column'] 

__fillable__ und __guarded__

Verwenden Sie es ordnungsgemäß, je nachdem, ob eine Massenzuweisung zulässig ist oder nicht. Eine Massenzuweisung ist für in __guarded__ definierte Parameter nicht zulässig. Wenn Sie die Massenzuweisung nicht für alle Attribute zulassen möchten, können Sie wie folgt schreiben.

class AllBlockSample(Model):                                                              
    __table__ = 'samples'
    __guarded__ = ['*']

Kneifen und essen Sie verschiedene andere Eigenschaften

In Orator gibt es verschiedene Eigenschaften, die durch "__ Eigenschaftsname __" dargestellt werden. Manchmal kann dies nur durch Festlegen der Eigenschaften erreicht werden, sodass Sie sich anscheinend freuen, wenn Sie es lesen. Unten ist ein Beispiel dafür.

** ・ __hidden__ Eigenschaft **

Betrachten Sie das folgende Modell als Beispiel.

class User(Model):
    __table__ = 'user'
    __fillable__ = ['login_id', 'password', 'name']
    __guarded__ = ['access_token']
    __hidden__ = ['password', 'access_token']

Orator bietet eine dedizierte Methode zum Auflisten der Eigenschaften einer Klasse.

Diejenigen, die auf "hidden" gesetzt sind, werden bei Verwendung der obigen Methode nicht angezeigt. Im Beispiel der Benutzerklasse werden nur die Anmelde-ID und der Name angezeigt (ID ist ** PRIMARY KEY **). Natürlich gelten die Effekte von "hidden" nicht für die Standard-Python "__dict __" und "vars ()".

** ・ __timestamp__ Eigenschaft **

Standardmäßig generiert Orator automatisch Spalten, in denen die Erstellungszeit der Tabelle (** created_at ) und die Aktualisierungszeit ( update_at **) aufgezeichnet werden. Wenn Sie nicht automatisch generieren möchten, fügen Sie __timestamps__ = False hinzu.

class SampleModel(Model):
    __table__ = 'samples'
    __timestamps__ = False

Daten in DB speichern

Sie können es mit save () oder create () speichern.

sample_model = SampleModel()
sample_model.string_column = "test"
sample_model.integer_column = 100
sample_model.save()

sample_model = SampleModel.create(string_column='test')

Sie können den Parameter __guarded__ nicht als zu erstellendes Argument übergeben. Selbst wenn es übergeben wird, wird es ignoriert und der entsprechende Parameter bleibt None.

Wenn beim Erstellen der Model-Klasse "guarded = ['*']" angegeben wird, tritt beim Aufrufen der create-Methode "orator.exceptions.orm.MassAssignmentError" auf.

Die subtilen Unterschiede zwischen save () und create () werden aufgrund mangelnder Forschung nicht verstanden.

Am Ende

Ich habe eine Reihe von Notizen über die Einstellungsmethode und die Klassendefinitionsmethode geschrieben. Ich wollte über "Migration" und "Auswählen / Löschen / Aktualisieren von Abfragen" schreiben, war aber erschöpft. Zu einem anderen Anlass.

Recommended Posts

Ich berührte "Orator" und machte mir eine Notiz
〇✕ Ich habe ein Spiel gemacht
Ich bin auf MoviePy gestoßen, machen Sie sich also eine Notiz
Ich habe einen Python-Text gemacht
Ich habe einen Zwietrachtbot gemacht
Ich berührte PyAutoIt für einen Moment
Ich habe ein CUI-basiertes Übersetzungsskript erstellt (2)
Ich habe einen Wikipedia Gacha Bot gemacht
Ich habe mit Python eine Lotterie gemacht.
Ich habe ein CUI-basiertes Übersetzungsskript erstellt
Ich habe mit Python einen Daemon erstellt
[Python] Ich habe versucht, eine stabile Sortierung zu implementieren
Postgres-Umgebungskonstruktion mit Docker Ich hatte ein wenig Probleme, also beachten Sie
Ich habe einen neuen AWS S3-Eimer hergestellt
Ich habe ein Dash-Docset für Holoviews erstellt
Ich habe ein Pay-Management-Programm in Python erstellt!
Ich habe mit Python einen Zeichenzähler erstellt
Anfänger: Ich habe einen Launcher mit dem Wörterbuch erstellt
Ich habe einen Gesprächspartner wie Siri gemacht
Ich habe ein Skript erstellt, um Piktogramme anzuzeigen
Ich habe mit Python eine Hex-Map erstellt
Ich habe ein Lebensspiel mit Numpy gemacht
Ich habe einen Hanko-Generator mit GAN gemacht
Ich habe ein automatisches Stempelwerkzeug für den Browser erstellt.
Nachdem ich Python3 studiert hatte, machte ich einen Slackbot
Ich habe versucht, pipenv zu verwenden, machen Sie sich also eine Notiz
Ich habe mit Python ein schurkenhaftes Spiel gemacht
Ich habe mit Python einen einfachen Blackjack gemacht
Ich habe mit Python eine Einstellungsdatei erstellt
Ich habe eine Bibliothek für versicherungsmathematische Versicherungen erstellt
Ich habe eine WEB-Bewerbung bei Django gemacht
Ich habe mit Python einen Neuronensimulator erstellt
Ich habe mir das Google-Labor notiert, das Spleeter problemlos verwenden kann.
Ich habe GAN mit Keras gemacht, also habe ich ein Video des Lernprozesses gemacht.
Ich war süchtig danach, Cython mit PyCharm auszuprobieren, also machen Sie sich eine Notiz
Ich habe einen Stempelersatzbot mit Linie gemacht
Ich habe eine Python-Wörterbuchdatei für Neocomplete erstellt
Ich habe mit Python eine Bot-Wettervorhersage gemacht.
Ich habe graph-rcnn berührt, das ein Szenendiagramm erzeugt
Ich habe ein nützliches Tool für Digital Ocean erstellt
Ich habe HaikuFinder berührt
Ich berührte Flask
Ich habe versucht, mit Python einen Twitter-Blocker für faule Mädchen zu machen
Ich habe ein verrücktes Ding namens getipptes Tupel gemacht
[Python] Ich habe mit Tkinter einen Youtube Downloader erstellt.
Ich habe ein Router-Konfigurationssammlungstool Config Collecor erstellt
Ich habe eine einfache Brieftasche aus Bitcoin mit Pycoin gemacht
Ich habe einen Downloader für wortverteilte Ausdrücke erstellt
Ich habe einen LINE Bot mit Serverless Framework erstellt!
Ich habe ein Tool erstellt, um Hy nativ zu kompilieren
Ich konnte dem Futon nicht entkommen und baute eine vollautomatische Futon-Peeling-Maschine.
Ich habe ein Tool erstellt, um neue Artikel zu erhalten
Nur eine Notiz
Ich habe mit Numpy eine Grafik mit Zufallszahlen erstellt
Wir haben ein Peeping-Prevention-Produkt für die Telearbeit entwickelt.
Ich habe einen einfachen RSS-Reader ~ C Edition ~ gemacht
Ich habe ein Caesar-Kryptografieprogramm in Python erstellt.
Ich habe mit Python ein Bin-Picking-Spiel gemacht
Mattermost Bot mit Python gemacht (+ Flask)