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