Это рассматриваемая модель: п>
Код: Выделить всё
class Show(db.Model):
id = db.Column(db.Integer, primary_key=True)
venue_id = db.Column(db.Integer, db.ForeignKey('venues.id'))
venue_name = db.Column(db.String)
artist_id = db.Column(db.Integer, db.ForeignKey('artists.id'))
artist_name = db.Column(db.String)
artist_image_link = db.Column(db.String(500))
# column at fault 👇🏾
start_time = db.Column(db.DateTime(timezone=False))
def __repr__(self):
return f''
Код: Выделить всё
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '3ac508896870'
down_revision = '90b7c2f14692'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.alter_column('shows', 'start_time',
existing_type=sa.VARCHAR(length=50),
type_=sa.DateTime(),
existing_nullable=True)
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.alter_column('shows', 'start_time',
existing_type=sa.DateTime(timezone=False),
type_=sa.VARCHAR(length=50),
existing_nullable=True)
# ### end Alembic commands ###
Код: Выделить всё
HINT: You might need to specify "USING start_time::timestamp without time zone".
[SQL: ALTER TABLE shows ALTER COLUMN start_time TYPE TIMESTAMP WITHOUT TIME ZONE ]
(Background on this error at: https://sqlalche.me/e/14/f405)
п>
Код: Выделить всё
op.alter_column('shows', 'start_time',
existing_type=sa.VARCHAR(length=50),
type_=sa.DateTime(timezone=False),
existing_nullable=True)
Кстати, я новичок в Flask, поэтому просто просматриваю документацию, чтобы разобраться. p>
РЕДАКТИРОВАТЬ: Я решил эту проблему для себя, полностью удалив существующий столбец типа String и заменив его новым столбцом DateTime. Это не будет идеальным для всех решений и стало возможным только потому, что в таблице не было важных данных.
Все еще ищем менее кардинальные решения.
Подробнее здесь: https://stackoverflow.com/questions/737 ... d-in-flask