Comment supprimer une table dans SQLAlchemy?

Je veux supprimer une table à l'aide de SQLAlchemy.

Depuis que je suis en train de tester encore et encore, je veux supprimer la table my_users afin que je puisse commencer à partir de zéro à chaque fois.

Jusqu'à présent, je suis à l'aide de SQLAlchemy pour exécuter SQL brut par le biais de la moteur.execute() méthode:

sql = text('DROP TABLE IF EXISTS my_users;')
result = engine.execute(sql)

Cependant, je me demande si il y a des façon de le faire. La seule que j'ai pu trouver est drop_all()mais il supprime toute la structure, non seulement à une table spécifique:

Base.metadata.drop_all(engine)   # all tables are deleted

Par exemple, dans cet exemple très simple. Elle se compose d'une SQLite infrastructure avec une seule table my_users dans laquelle j'ai ajouté un peu de contenu.

from sqlalchemy import create_engine, Column, Integer, String, text
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

engine = create_engine('sqlite://', echo=False)
Base = declarative_base()

class User(Base):
    __tablename__ = "my_users"

    id = Column(Integer, primary_key=True)
    name = Column(String)

    def __init__(self, name):
        self.name = name

# Create all the tables in the database which are
# defined by Base's subclasses such as User
Base.metadata.create_all(engine)

# Construct a sessionmaker factory object
session = sessionmaker()

# Bind the sessionmaker to engine
session.configure(bind=engine)

# Generate a session to work with
s = session()

# Add some content
s.add(User('myname'))
s.commit()

# Fetch the data
print(s.query(User).filter(User.name == 'myname').one().name)

Pour ce cas précis, drop_all() pourrait fonctionner, mais il ne sera pas pratique à partir du moment où je commence à avoir plus d'une table et je veux garder l'autre.

source d'informationauteur fedorqui