[PYTHON] Wie mit SQLAlchemy ändern?

Ich habe herausgefunden, wie man ** Alter ** mit ** SQLAlchemy ** macht, also möchte ich es als Erinnerung schreiben.

Leider scheint SQLAlchemy keine speziellen Funktionen zum Ausführen von Alter zu unterstützen.

Ändern Sie das Schema im Allgemeinen mit einem Migrationstool wie Alembic oder SQLAlchemy-Migrate. Machen.

Wenn Sie das Schema wirklich dynamisch ändern möchten, wählen Sie Connection.execute () oder Verwenden Sie DDL.

Offizielle Dokumente> Ändern von Schemata durch Migrationen http://docs.sqlalchemy.org/en/latest/core/metadata.html#altering-schemas-through-migrations

Betriebsumgebung

Beispielcode

Beispielcode zum Hinzufügen einer neuen Spalte "kana" zur Tabelle.

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)

    #Lass den Tisch fallen
    Base.metadata.drop_all(engine)

    #Tabelle erstellen
    Base.metadata.create_all(engine)

    #Spalte zur Tabelle hinzufügen
    column = sqlalchemy.Column('kana', sqlalchemy.String(40), primary_key=False)
    Student.add_column(engine, column)

if __name__ == '__main__':
    main()

Recommended Posts

Wie mit SQLAlchemy ändern?
Wie aktualisiere ich mit SQLAlchemy?
Wie lösche ich mit SQLAlchemy?
So verbinden Sie INNER mit SQL Alchemy
So erhalten Sie die Eltern-ID mit sqlalchemy
Verwendung von SQLAlchemy / Connect mit aiomysql
Einführung in RDB mit sqlalchemy Ⅰ
Wie man mit Theano besetzt
So trennen Sie Zeichenfolgen mit ','
Wie man RDP auf Fedora31 macht
So konvertieren Sie ein Klassenobjekt mit SQLAlchemy in ein Wörterbuch
So erhalten Sie mit SQLAlchemy + MySQLdb mehr als 1000 Daten
So brechen Sie RT mit tweepy ab
Umgang mit Sitzungen in SQLAlchemy
Python: So verwenden Sie Async mit
Stellen Sie mit SQL Alchemy eine Verbindung zu mehreren Datenbanken her
So verwenden Sie virtualenv mit PowerShell
So installieren Sie Python-Pip mit Ubuntu20.04LTS
Umgang mit unausgeglichenen Daten
Einführung in RDB mit sqlalchemy II
Erste Schritte mit Python
Umgang mit dem DistributionNotFound-Fehler
Wie fange ich mit Django an?
Aufblasen von Daten (Datenerweiterung) mit PyTorch
So berechnen Sie das Datum mit Python
So installieren Sie den MySQL-Connector mit pip3
So installieren Sie Anaconda mit pyenv
[Blender] So legen Sie shape_key mit dem Skript fest
Wie man mit matplotlib mehrere Figuren betitelt
So fügen Sie ein Paket mit PyCharm hinzu
So installieren Sie DLIB mit aktiviertem 2020 / CUDA
Verwendung von ManyToManyField mit Djangos Admin
Verwendung von OpenVPN mit Ubuntu 18.04.3 LTS
Verwendung von Cmder mit PyCharm (Windows)
So verhindern Sie Paketaktualisierungen mit apt
So arbeiten Sie mit BigQuery in Python
Wie man Ass / Alembic mit HtoA benutzt
Umgang mit Enum-Kompatibilitätsfehlern
Wie man einen Taschentest mit Python macht
So suchen Sie in Google Colaboratory nach Google Drive
So laden Sie YouTube-Videos mit youtube-dl herunter
Verwendung des Jupyter-Notebooks mit ABCI
So schalten Sie Linux unter Ultra96-V2 aus
Verwendung des CUT-Befehls (mit Beispiel)
Wie man mit Python-Flüchen Japanisch eingibt
So installieren Sie zsh (mit .zshrc-Anpassung)
Wie man Problemdaten mit Paiza liest
So gruppieren Sie Volumes mit LVM
So installieren Sie Python3 mit Docker Centos
Verwendung des JDBC-Treibers mit Redash
So löschen Sie vergangene Tweets mit Tweepy selektiv
Hochladen mit Heroku, Flask, Python, Git (4)
Umgang mit Speicherlecks in matplotlib.pyplot
Erstellen von CSV-Beispieldaten mit Hypothese