Python 在烧瓶上使用SQLAlchemy替换所有行的字符
我犯了一个错误,在使用SQLAlchemy提交到数据库的表单中意外使用了非ascii字符,该表单在Flask上运行。基本上,我没有使用ASCII连字符,而是使用unicode连字符。我现在尝试返回并用连字符替换数据库中出现的所有en破折号 假设我有一个users表,我试图更改的列名为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'
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()
您是否尝试过这样做来执行查询?然后,您可以替换每条记录中的短划线,并保留更改。