[PYTHON] Comment modifier avec SQLAlchemy?

J'ai découvert comment faire ** Alter ** avec ** SQLAlchemy **, alors j'aimerais l'écrire comme rappel.

Malheureusement, SQLAlchemy ne semble pas prendre en charge de fonctionnalités spéciales pour exécuter Alter.

En règle générale, modifiez le schéma à l'aide d'un outil de migration tel que Alembic ou SQLAlchemy-Migrate. Faire.

De plus, si vous voulez vraiment changer le schéma dynamiquement, Connection.execute () ou Utilisez DDL.

Documents officiels> Modifier les schémas lors des migrations http://docs.sqlalchemy.org/en/latest/core/metadata.html#altering-schemas-through-migrations

Environnement d'exploitation

Exemple de code

Exemple de code pour ajouter une nouvelle colonne «kana» à la table.

sqlalchemy_alter.py


# -*- coding:utf-8 -*-
import sqlalchemy
import sqlalchemy.ext.declarative

Base = sqlalchemy.ext.declarative.declarative_base()

class Student(Base):
    __tablename__ = 'students'
    id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True)
    name = sqlalchemy.Column(sqlalchemy.String(20))

    @staticmethod
    def add_column(engine, column):
        column_name = column.compile(dialect=engine.dialect)
        column_type = column.type.compile(engine.dialect)
        engine.execute('ALTER TABLE %s ADD COLUMN %s %s' % (Student.__tablename__, column_name, column_type))

def main():
    url = 'mysql+pymysql://root:@localhost/test_db?charset=utf8'

    engine = sqlalchemy.create_engine(url, echo=True)

    #Déposez la table
    Base.metadata.drop_all(engine)

    #Créer une table
    Base.metadata.create_all(engine)

    #Ajouter une colonne à la table
    column = sqlalchemy.Column('kana', sqlalchemy.String(40), primary_key=False)
    Student.add_column(engine, column)

if __name__ == '__main__':
    main()

Recommended Posts

Comment modifier avec SQLAlchemy?
Comment mettre à jour avec SQLAlchemy?
Comment supprimer avec SQLAlchemy?
Comment INNER JOIN avec SQL Alchemy
Comment obtenir l'identifiant du parent avec sqlalchemy
Comment utiliser SQLAlchemy / Connect avec aiomysql
Introduction à RDB avec sqlalchemy Ⅰ
Comment lancer avec Theano
Comment séparer les chaînes avec ','
Comment faire RDP sur Fedora31
Comment convertir un objet de classe en dictionnaire avec SQLAlchemy
Comment obtenir plus de 1000 données avec SQLAlchemy + MySQLdb
Comment annuler RT avec Tweepy
Comment gérer une session dans SQLAlchemy
Python: comment utiliser async avec
Connectez-vous à plusieurs bases de données avec SQL Alchemy
Pour utiliser virtualenv avec PowerShell
Comment installer python-pip avec ubuntu20.04LTS
Comment gérer les données déséquilibrées
Introduction à RDB avec sqlalchemy II
Comment démarrer avec Python
Comment gérer l'erreur DistributionNotFound
Comment démarrer avec Django
Comment augmenter les données avec PyTorch
Comment calculer la date avec python
Comment installer mysql-connector avec pip3
Comment installer Anaconda avec pyenv
[Blender] Comment définir shape_key avec un script
Comment titrer plusieurs figures avec matplotlib
Comment ajouter un package avec PyCharm
Comment installer DLIB avec 2020 / CUDA activé
Comment utiliser ManyToManyField avec l'administrateur de Django
Comment utiliser OpenVPN avec Ubuntu 18.04.3 LTS
Comment utiliser Cmder avec PyCharm (Windows)
Comment empêcher les mises à jour de paquets avec apt
Comment utiliser BigQuery en Python
Comment utiliser Ass / Alembic avec HtoA
Comment gérer les erreurs de compatibilité d'énumération
Comment faire un test de sac avec python
Comment rechercher Google Drive dans Google Colaboratory
Comment télécharger des vidéos YouTube avec youtube-dl
Comment utiliser le notebook Jupyter avec ABCI
Comment mettre hors tension de Linux sur Ultra96-V2
Comment utiliser la commande CUT (avec exemple)
Comment entrer le japonais avec les malédictions Python
Comment installer zsh (avec la personnalisation .zshrc)
Comment lire les données de problème avec Paiza
Comment regrouper des volumes avec LVM
Comment installer python3 avec docker centos
Comment utiliser le pilote JDBC avec Redash
Comment supprimer sélectivement les anciens tweets avec Tweepy
Comment télécharger avec Heroku, Flask, Python, Git (4)
Comment gérer les fuites de mémoire dans matplotlib.pyplot
Comment créer des exemples de données CSV avec hypothèse