使用sqlalchemy 0.9.7,我试图在启用utf8mb4的情况下将表情符号存储到MySQL 5.5中.然而,由于某种原因,sqlalchemy正在杀死我的表情符号字符,我无法弄清楚为什么.在尝试通过sqlalchemy保存数据之前,我可以在对象中看到表情符号字符.保存后,抛出错误,表情符号呈现为????.
错误如下.请注意,它被输出type(post.message)和调试消息所包围post.message.
--------------------------------------------------------------------------------
DEBUG in __init__ [/mnt/hgfs/crw/dev/hyper/hyper/blueprint/chat/__init__.py:274]:
<type 'unicode'>
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
DEBUG in __init__ [/mnt/hgfs/crw/dev/hyper/hyper/blueprint/chat/__init__.py:275]:
--------------------------------------------------------------------------------
/mnt/hgfs/crw/dev/hyper/env/local/lib/python2.7/site-packages/sqlalchemy/engine/default.py:436: Warning: Incorrect string value: '\xF0\x9F\x98\x83' for column 'message' at row 1
cursor.execute(statement, parameters)
--------------------------------------------------------------------------------
DEBUG in __init__ [/mnt/hgfs/crw/dev/hyper/hyper/blueprint/chat/__init__.py:277]:
<type 'unicode'>
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
DEBUG in __init__ [/mnt/hgfs/crw/dev/hyper/hyper/blueprint/chat/__init__.py:278]:
????
--------------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我的代码看起来像:
Base = declarative_base()
post = Table('post', Base.metadata,
Column("id", Integer, primary_key=True),
Column("message", UnicodeText),
Column("created_at", DateTime),
Column("updated_at", DateTime),
)
mapper(Post, post)
Run Code Online (Sandbox Code Playgroud)
我需要做任何其他设置才能使其工作吗?
更新:如果我执行以下操作:
Base = declarative_base()
post = Table('post', Base.metadata, …Run Code Online (Sandbox Code Playgroud)