我有一个带有Unicode列的SQLAlchemy模型。我有时会向其插入unicode值(u'Value'),但有时也会插入ASCII字符串。最好的方法是什么?当我插入带有特殊字符的ASCII字符串时,我收到此警告:
SAWarning: Unicode type received non-unicode bind param value ...
我该如何避免这种情况?插入不同类型字符串的正确方法是什么?
答案 0 :(得分:5)
有几种选择:
warnings.simplefilter('ignore', sqlalchemy.exc.SAWarning)
禁用所有SQLAlchemy警告。warnings.filterwarnings('ignore', '^Unicode type received non-unicode bind param value', sqlalchemy.exc.SAWarning)
。String(convert_unicode=True)
代替Unicode
类型。答案 1 :(得分:0)
您应该如下定义表类和构造函数:
class User(declarative_base()):
_tablename__ = 'user'
name = Column(Unicode(200, convert_unicode=False))
textfield = Column(UnicodeText(convert_unicode=False))
user = Table('user', MetaData(),
Column('name', Unicode(200, convert_unicode=False), nullable=False),
Column('textfield', UnicodeText(convert_unicode=False), nullable=False),
)
当然,您不应忘记为URI+"charset=utf8"
create_engine function