Python 在烧瓶上使用SQLAlchemy替换所有行的字符

Python 在烧瓶上使用SQLAlchemy替换所有行的字符,python,flask,sqlalchemy,flask-sqlalchemy,python-unicode,Python,Flask,Sqlalchemy,Flask Sqlalchemy,Python Unicode,我犯了一个错误,在使用SQLAlchemy提交到数据库的表单中意外使用了非ascii字符,该表单在Flask上运行。基本上,我没有使用ASCII连字符,而是使用unicode连字符。我现在尝试返回并用连字符替换数据库中出现的所有en破折号 假设我有一个users表,我试图更改的列名为occulation。我能够找出数据库中哪些条目具有无效字符,因为当我运行时: User.query.get(id) 如果用户具有无效的ASCII字符,则返回 UnicodeEncodeError: 'ascii'

我犯了一个错误,在使用SQLAlchemy提交到数据库的表单中意外使用了非ascii字符,该表单在Flask上运行。基本上,我没有使用ASCII连字符,而是使用unicode连字符。我现在尝试返回并用连字符替换数据库中出现的所有en破折号

假设我有一个users表,我试图更改的列名为
occulation
。我能够找出数据库中哪些条目具有无效字符,因为当我运行时:

User.query.get(id)
如果用户具有无效的ASCII字符,则返回

UnicodeEncodeError: 'ascii' codec can't encode character u'\u2013' in position 167: ordinal not in range(128)

因此,如何在数据库中的所有行的
occulation
列中用连字符替换所有出现的en破折号?

我可以通过在数据库中的所有条目上运行脚本,并用错误字符替换这些条目来修复此问题

from user.models import *
for u in User.query.all():
    # \u2013 is unicode for en-dash
    if u"\u2013" in u.occupation:
        # replace with normal hyphen
        u.occupation = u.occupation.replace(u"\u2013", "-")
        db.session.commit()

您是否尝试过这样做来执行查询?然后,您可以替换每条记录中的短划线,并保留更改。