将字符串插入SQLAlchemy Unicode列的正确方法

Rai*_*ers 13 python unicode sqlalchemy insertion

我有一个带有Unicode列的SQLAlchemy模型.我有时会向其插入unicode值(u'Value'),但有时也会插入ASCII字符串.最好的方法是什么?当我插入带有特殊字符的ASCII字符串时,我收到此警告:

SAWarning: Unicode type received non-unicode bind param value ...
Run Code Online (Sandbox Code Playgroud)

我该如何避免这种情况?插入不同类型字符串的正确方法是什么?

Den*_*ach 5

有几种选择:

  1. 使用禁用所有SQLAlchemy警告warnings.simplefilter('ignore', sqlalchemy.exc.SAWarning).
  2. 使用模块和lineno或消息的更具体的过滤器规范仅禁用此警告,例如warnings.filterwarnings('ignore', '^Unicode type received non-unicode bind param value', sqlalchemy.exc.SAWarning).
  3. 使用String(convert_unicode=True)而不是Unicode类型.
  4. 重新思考问题并更改代码以使用unicode甚至是ASCII字符串.

  • 你尝试删除问题而不是解决它.关于3号:`sqlalchemy`的官方文档说使用`Unicode类型`但你说使用`String(convert_unicode = True)`,我有同样的问题,但我不认为sqlalchemy解决'禁用警告',因为它有'干净的代码`而不是'脏'. (3认同)