es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

python posgresql ormar truncate table Python postgresql ormar truncate table python posgresql ormar truncate table (Eliminar tabla)

Actualmente estoy utilizando ormar en Python para cosas relacionadas con PostgreSQL y también estoy aprendiendo en el proceso. Al utilizar este repositorio de Docker con FastAPI, Postgres y Traefik como plantilla para comenzar mi proyecto, descubrí que el ejemplo utiliza ormar y decidí usarlo también, convirtiendo mis códigos a ormar.

En este caso, me gustaría truncar la tabla antes de agregar un nuevo conjunto de datos, de esta manera, mi ID como clave primaria para cada fila se reiniciará en lugar de incrementarse cada vez que borro y vuelvo a insertar los datos.

Actualmente estoy utilizando el siguiente comando para borrar:

await MyClass.objects.delete(each=True)

Con ese código anterior, puedo borrar cada fila y volver a insertar los datos, pero mi ID sigue aumentando en lugar de reiniciarse. ¿Qué debo hacer para que mi ID se reinicie cada vez que vuelvo a insertar los datos en la tabla?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para restablecer la ID de cada fila en la tabla de la base de datos cuando se elimina y vuelve a insertar datos, puedes eliminar la tabla y recrearla utilizando el objeto metadata de SQLAlchemy. Aquí tienes un ejemplo de cómo hacerlo:

    from sqlalchemy import create_engine, MetaData
    
    from myapp.models import Base, MyClass
    
    # crear objetos SQLAlchemy engine y metadata
    engine = create_engine("postgresql://user:password@host:port/dbname")
    metadata = MetaData(bind=engine)
    
    # eliminar y recrear la tabla
    Base.metadata.drop_all(bind=engine)
    Base.metadata.create_all(bind=engine)
    
    # insertar tus datos en la tabla
    data = [
        {"field1": "value1", "field2": "value2", ...},
        {"field1": "value3", "field2": "value4", ...},
        ...
    ]
    with orm.Session(engine) as session:
        for item in data:
            obj = MyClass(**item)
            session.add(obj)
        session.commit()
    

    Ten en cuenta que esto eliminará todos los datos de la tabla y los recreará, así que utiliza este enfoque con precaución.

Comments are closed.