我在 sqlalchemy 中有一个数据库,我试图在数据库迁移期间将数据库中列的值更改为小写

I have a database in sqlalchemy and I'm trying to change the values of a column in the database to lowercase during the database migration

FeedSnapshot table 有一列用户名,我想将其值强制全部小写。此外,当我尝试使用 update..set commnad 时,我收到一条错误消息,指出 'update' 没有属性 'set'。是否有我可以在此处使用的等效命令?

这是我尝试过的:

def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
session = Session(bind=op.get_bind())
session.autoflush = False
metadata = MetaData(bind=op.get_bind())

feed_snapshot = Table('FeedSnapshots', metadata, autoload=True)
# update(feed_snapshot).set(feed_snapshot.c.Username == feed_snapshot.c.Username.lower())\
#     .where(feed_snapshot.c.Username).upper()
session.query(feed_snapshot).filter(func.lower(feed_snapshot.c.Username))

def downgrade():
pass

刚想出解决办法。您需要使用 update_table_by_filed_name:

def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
session = Session(bind=op.get_bind())
session.autoflush = False
metadata = MetaData(bind=op.get_bind())

feed_snapshot = Table('FeedSnapshots', metadata, autoload=True)
session.execute(update_table_by_field_name('FeedSnapshots', values={'Username': func.lower(feed_snapshot.c.Username)}, bind=op.get_bind()))
session.commit()


def downgrade():
pass