13

Unicode 列を持つ SQLAlchemy モデルがあります。Unicode 値 (u'Value') を挿入することもありますが、ASCII 文字列を挿入することもあります。これについて最善の方法は何ですか?特殊文字を含む ASCII 文字列を挿入すると、次の警告が表示されます。

SAWarning: Unicode type received non-unicode bind param value ...

どうすればこれを回避できますか? さまざまな種類の文字列を挿入する適切な方法は何ですか?

4

2 に答える 2

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. 問題を再考し、ASCII文字列でもUnicodeを使用するようにコードを変更してください。
于 2011-04-21T12:20:57.633 に答える
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

于 2013-09-06T06:14:40.540 に答える