The Orator ORM provides a simple yet beautiful ActiveRecord implementation.
Spécifiez le répertoire et la base de données. Actuellement, trois bases de données sont prises en charge: PostgreSQL, MySQL et SQLite. Définissez le pilote, l'utilisateur (utilisateur de la base de données), le mot de passe (mot de passe de la base de données), la base de données (emplacement de la base de données), etc. Par exemple, dans le cas de SQLite, il peut être défini comme suit.
DATABASES = {
'development': {
'driver': 'sqlite',
'database': '/tmp/authgate.sqlite'
}
}
Vous pouvez créer une instance de DatabaseManager et accéder à la base de données avec cette instance. Transmettez la définition de base de données lors de la création d'une instance.
from orator import DatabaseManager
DATABASES = {
'development': {
'driver': 'sqlite',
'database': '/tmp/authgate.sqlite'
}
}
db = DatabaseManager(DATABASES)
Vous pouvez opérer sur DB avec Schema Builder. Créez une instance de schéma en transmettant une instance de DatabaseManager. Après cela, utilisez l'instance Schema pour appeler la méthode qui correspond à la colonne de la table que vous souhaitez définir.
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')
Lorsque le fichier ci-dessus créé est exécuté, un DB basé sur la définition est créé.
$ python create-database.py
Pour plus d'informations, consultez la section Générateur de schémas d'Orator. http://orator.readthedocs.org/en/latest/schema_builder.html)を参照。
Créez en héritant de la classe Model d'Orator. L'exemple suivant est une classe mappée à la table ** samples ** avec deux colonnes, ** string_column ** et ** integer_column ** créées précédemment.
class Sample(Model):
__table__ = 'samples'
__fillable__ = ['string_column']
__guarded__ = ['integer_column']
__fillable__
et __guarded__
Utilisez correctement selon que l'affectation en masse est autorisée ou non. L'affectation en masse n'est pas autorisée pour les paramètres définis dans «guarded». Si vous ne souhaitez pas autoriser l'affectation en masse pour tous les attributs, vous pouvez écrire comme suit.
class AllBlockSample(Model):
__table__ = 'samples'
__guarded__ = ['*']
Dans Orator, il existe diverses propriétés représentées par «__ nom de propriété __». Parfois, cela peut être réalisé simplement en définissant les propriétés, il semble donc que vous serez heureux si vous le lisez. Voici un exemple de celui-ci.
__hidden__
**Considérez le modèle suivant comme exemple.
class User(Model):
__table__ = 'user'
__fillable__ = ['login_id', 'password', 'name']
__guarded__ = ['access_token']
__hidden__ = ['password', 'access_token']
Orator fournit une méthode dédiée pour énumérer les propriétés d'une classe.
to_json ()
: format jsonseliarize ()
: format du dictionnaireCeux définis sur «hidden» ne sont pas affichés lors de l'utilisation de la méthode ci-dessus. Dans l'exemple de la classe User, seuls login_id et name sont affichés (id is ** PRIMARY KEY **).
Bien sûr, les effets de __hidden__
ne s'appliquent pas aux standards Python __dict __
etvars ()
.
__timestamp__
**Par défaut, Orator génère automatiquement une colonne qui enregistre l'heure de création de la table (** created_at ) et l'heure de mise à jour ( updated_at **). Si vous ne voulez pas générer automatiquement, ajoutez __timestamps__ = False
.
class SampleModel(Model):
__table__ = 'samples'
__timestamps__ = False
Vous pouvez l'enregistrer avec save () ou create ().
sample_model = SampleModel()
sample_model.string_column = "test"
sample_model.integer_column = 100
sample_model.save()
sample_model = SampleModel.create(string_column='test')
Vous ne pouvez pas passer le paramètre __guarded__
à l'argument de création. Même s'il est passé, il sera ignoré et le paramètre correspondant restera None.
De plus, si __guarded__ = ['*']
est spécifié lors de la création de la classe Model, ʻorator.exceptions.orm.MassAssignmentError` se produira lors de l'appel de la méthode create.
Les différences subtiles entre save () et create () ne sont pas comprises en raison du manque de recherche.
J'ai écrit une série de notes sur la méthode de réglage et la méthode de définition de classe. J'avais l'intention d'écrire sur «Migration» et «Émettre des requêtes de sélection / suppression / mise à jour», mais j'étais épuisé. À une autre occasion.
Recommended Posts