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



FeedSnapshot表有一个列用户名,我想强制其值全部小写。此外,当我尝试使用更新时。。set命令,我得到一个错误,"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

最新更新