create python terminal sqlalchemy

python - sqlalchemy create table



añadir columna a la tabla SQLAlchemy (6)

Consulte esta sección de la documentación de SQLAlchemy: http://docs.sqlalchemy.org/en/latest/core/metadata.html#altering-schemas-through-migrations

Alembic es el último software que ofrece este tipo de funcionalidad y está hecho por el mismo autor que SQLAlchemy.

Hice una tabla usando SQLAlchemy y olvidé agregar una columna. Básicamente quiero hacer esto:

users.addColumn(''user_id'', ForeignKey(''users.user_id''))

¿Cuál es la sintaxis de esto? No pude encontrarlo en los documentos.


El mismo problema por aquí. Lo que haré es iterar sobre la base de datos y agregar cada entrada a una nueva base de datos con la columna adicional, luego eliminar la antigua base de datos y cambiar el nombre de la nueva a esta.


Esto se conoce como migración de base de datos (SQLAlchemy no admite la migración fuera de la caja). Puede ver cómo usar sqlalchemy-migrate para ayudar en este tipo de situaciones, o simplemente ALTER TABLE través de la utilidad de línea de comando de su base de datos elegida,


Tengo el mismo problema, y ​​un pensamiento de usar la biblioteca de migración solo para esta cosa trivial me hace
temblar. De todos modos, este es mi intento hasta ahora:

def add_column(engine, table_name, column): column_name = column.compile(dialect=engine.dialect) column_type = column.type.compile(engine.dialect) engine.execute(''ALTER TABLE %s ADD COLUMN %s %s'' % (table_name, column_name, column_type)) column = Column(''new column'', String(100), primary_key=True) add_column(engine, table_name, column)

Aún así, no sé cómo insertar primary_key=True en la solicitud de SQL sin primary_key=True .


Tengo una base de datos llamada "ncaaf.db" construida con sqlite3 y una tabla llamada "juegos". Así que haría un CD en el mismo directorio en mi línea de comandos de Linux y lo haría

sqlite3 ncaaf.db alter table games add column q4 type float

¡Y eso es todo lo que se necesita! Solo asegúrate de actualizar tus definiciones en tu código sqlalchemy.


Tuve el mismo problema, acabé de escribir mi propia función en sql sin formato. Si está utilizando SQLITE3, esto podría ser útil.

Luego, si agrega la columna a su definición de clase al mismo tiempo, parece hacer el truco.

import sqlite3 def add_column(database_name, table_name, column_name, data_type): connection = sqlite3.connect(database_name) cursor = connection.cursor() if data_type == "Integer": data_type_formatted = "INTEGER" elif data_type == "String": data_type_formatted = "VARCHAR(100)" base_command = ("ALTER TABLE ''{table_name}'' ADD column ''{column_name}'' ''{data_type}''") sql_command = base_command.format(table_name=table_name, column_name=column_name, data_type=data_type_formatted) cursor.execute(sql_command) connection.commit() connection.close()