如何使用 web2py (mySQL) 插入 4 字节 unicode 字符?

How do I insert 4 byte unicode chars using web2py (mySQL)?

我有一个设置为 CHARACTER SET utf8mb4 的 mySQL table 和一个具有 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci 的列 x,我可以 运行 SQL 直接在数据库上插入一个 4 字节 unicode 字符的命令,如

INSERT INTO mytable (x) VALUES ('');

但是当我在 web2py 中 运行 以下内容时,我得到了一个不同的条目,看起来像 ????

sql = u"INSERT INTO mytable (x) VALUES (%s)"
db.executesql(sql, (u'',))

我需要在 web2py 的某个地方设置一些东西来告诉它不加改变地传递 unicode 字符吗?

附录:当我使用 DAL 时也会出现相同的 ???? 条目,如

db.mytable.insert(x=u'')

参见

中的 "question mark"

请参阅 http://mysql.rjweb.org/doc.php/charcoll#python 中的 Python 注释。特别是,您的连接参数是什么(在 Python 和 MySQL 之间)?

u"Invalid utf8 character string: 'F09F92'" 暗示 Python(可能来自解释 MySQL utf8 错误)对 4 字节的便便感到困惑。