[PYTHON] Wie lösche ich mit SQLAlchemy?

Dieses Mal werde ich die Methode ** Löschen ** mit ** SQLAlchemy ** schreiben.

Betriebsumgebung

Beispielcode

Durchsuchen Sie zunächst einfach die Tabelle nach Daten, deren Spalte "Name" "Yuko Kuwata" lautet, und löschen Sie sie.

sqlalchemy_delete.py


# -*- coding:utf-8 -*-
import sqlalchemy
import sqlalchemy.orm
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))
    kana = sqlalchemy.Column(sqlalchemy.String(40))

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

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

    #Tabelle erstellen
    Base.metadata.create_all(engine)

    #Erstellen Sie eine Sitzung
    Session = sqlalchemy.orm.sessionmaker(bind=engine)
    session = Session()

    #Löschen Sie alle Daten
    session.query(Student).delete()

    #Liste der Daten, die der Datenbank hinzugefügt werden sollen
    student_list = [
        Student(id=1, name='Yu Ishizaka', kana='Yu Ishizaka'),
        Student(id=2, name='Seiichi Sugino', kana='Sugi no Seiichi'),
        Student(id=3, name='Yuko Kuwata', kana='Yuko Kuwata'),
        Student(id=4, name='Ai Kurihara', kana='Kurihara Ai'),
        Student(id=5, name='Hitoshi Sakuma', kana='Sakuma Jin'),
    ]

    #Datenliste sofort hinzufügen
    session.add_all(student_list)

    #Suchen Sie nach zu löschenden Daten
    found_student = session.query(Student).filter_by(name='Yuko Kuwata').first()

    #Löschen Sie die angegebenen Daten
    session.delete(found_student)

    #Geben Sie alle Daten in der Tabelle aus
    print_all_students(session)

    #Reflektiert in der Datenbank
    session.commit()

#Eine Funktion, die alle Daten in der Tabelle ausgibt
def print_all_students(session):
    students = session.query(Student).all()
    for student in students:
        print('%d, %s %s' % (student.id, student.name, student.kana))

if __name__ == '__main__':
    main()

Löschen Sie als Anwendung als Anwendung die Daten, indem Sie den Filter oder die IN-Klausel angeben.

sqlalchemy_delete.py


# -*- coding:utf-8 -*-
import sqlalchemy
import sqlalchemy.orm
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))
    kana = sqlalchemy.Column(sqlalchemy.String(40))

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

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

    #Tabelle erstellen
    Base.metadata.create_all(engine)

    #Erstellen Sie eine Sitzung
    Session = sqlalchemy.orm.sessionmaker(bind=engine)
    session = Session()

    #Löschen Sie alle Daten
    print("====== session.query(Student).delete() =====")
    session.query(Student).delete()
    print_all_students(session)

    #Liste der Daten, die der Datenbank hinzugefügt werden sollen
    student_list = [
        Student(id=1, name='Yu Ishizaka', kana='Yu Ishizaka'),
        Student(id=2, name='Seiichi Sugino', kana='Sugi no Seiichi'),
        Student(id=3, name='Yuko Kuwata', kana='Yuko Kuwata'),
        Student(id=4, name='Ai Kurihara', kana='Kurihara Ai'),
        Student(id=5, name='Hitoshi Sakuma', kana='Sakuma Jin'),
    ]

    #Datenliste sofort hinzufügen
    print("====== session.add_all(student_list) ======")
    session.add_all(student_list)
    print_all_students(session)

    #Löschen Sie durch Angabe mit einem Filter
    print("====== session.query(Student).filter(Student.id==2).delete() =====")
    session.query(Student).filter(Student.id==2).delete()
    print_all_students(session)

    #Löschen Sie durch Angabe in der IN-Klausel
    print("====== session.query(Student).filter(Student.id.in_([3, 4])).delete(synchronize_session='fetch') =====")
    session.query(Student).filter(Student.id.in_([3, 4])).delete(synchronize_session='fetch')
    print_all_students(session)

    #Reflektiert in der Datenbank
    session.commit()

#Eine Funktion, die alle Daten in der Tabelle ausgibt
def print_all_students(session):
    students = session.query(Student).all()
    for student in students:
        print('%d, %s %s' % (student.id, student.name, student.kana))

if __name__ == '__main__':
    main()

Zusammenfassung

Ist es delete_all, alle Daten zu löschen, da es in der Session-Klasse eine Methode namens add_all gibt? Es scheint, dass einige Leute das denken, aber es ist nicht so, also sei vorsichtig.

Das Standardargument des Löschmethodenarguments synchronize_session lautet außerdem'evaluate '. Wenn Sie es also in der IN-Klausel angeben und löschen, erhalten Sie eine Ausnahme, wenn Sie'fetch' nicht angeben. Weitere Informationen finden Sie in der offiziellen Dokumentation (http://docs.sqlalchemy.org/en/rel_1_1/orm/query.html#sqlalchemy.orm.query.Query.delete).

[Fehlermeldung] sqlalchemy.exc.InvalidRequestError: Could not evaluate current criteria in Python. Specify 'fetch' or False for the synchronize_session parameter.

Offizielles Dokument> Abfrage-API> Löschen (synchronize_session = 'evaluieren') http://docs.sqlalchemy.org/en/rel_1_1/orm/query.html#sqlalchemy.orm.query.Query.delete

Recommended Posts

Wie lösche ich mit SQLAlchemy?
Wie aktualisiere ich mit SQLAlchemy?
Wie mit SQLAlchemy ändern?
So verbinden Sie INNER mit SQL Alchemy
So erhalten Sie die Eltern-ID mit sqlalchemy
Verwendung von SQLAlchemy / Connect mit aiomysql
So löschen Sie vergangene Tweets mit Tweepy selektiv
So löschen Sie ein Protokoll mit Docker, nicht um ein Protokoll zu sammeln
Wie man mit Theano besetzt
Wie man RDP auf Fedora31 macht
So löschen Sie die angegebene Zeichenfolge mit dem Befehl sed! !! !!
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
Python: So verwenden Sie Async mit
Stellen Sie mit SQL Alchemy eine Verbindung zu mehreren Datenbanken her
So installieren Sie Python-Pip mit Ubuntu20.04LTS
Umgang mit unausgeglichenen Daten
So erstellen / löschen Sie symbolische Links
Einführung in RDB mit sqlalchemy II
Wie fange ich mit Scrapy an?
Erste Schritte mit Python
Umgang mit dem DistributionNotFound-Fehler
Wie fange ich mit Django an?
Aufblasen von Daten (Datenerweiterung) mit PyTorch
So löschen Sie einen Docker-Container
So berechnen Sie das Datum mit Python
So installieren Sie den MySQL-Connector mit pip3
So installieren Sie Anaconda mit pyenv
So führen Sie eine arithmetische Verarbeitung mit der Django-Vorlage durch
[Blender] So legen Sie shape_key mit dem Skript fest
So fügen Sie ein Paket mit PyCharm hinzu
So löschen Sie abgelaufene Sitzungen in Django
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 arbeiten Sie mit BigQuery in Python
Wie man Ass / Alembic mit HtoA benutzt
Umgang mit Enum-Kompatibilitätsfehlern
Verwendung von Japanisch mit NLTK-Plot
Wie man einen Taschentest mit Python macht
So suchen Sie in Google Colaboratory nach Google Drive
So zeigen Sie Python-Japanisch mit Lolipop an
So laden Sie YouTube-Videos mit youtube-dl herunter
Verwendung des Jupyter-Notebooks mit ABCI
Verwendung des CUT-Befehls (mit Beispiel)
Wie man mit Python-Flüchen Japanisch eingibt
So installieren Sie zsh (mit .zshrc-Anpassung)
So gruppieren Sie Volumes mit LVM
So installieren Sie Python3 mit Docker Centos
Verwendung des JDBC-Treibers mit Redash
Erstellen von CSV-Beispieldaten mit Hypothese
Lesen einer CSV-Datei mit Python 2/3