自从Mysql
但是如果CHAR类型的列是一个字母数字字符串,在UTF8或latin1中自定义排序规则会更好吗?
我使用Flask-SqlalChemy
,我的项目设置SQLALCHEMY_DATABASE_URI='mysqlmysqldb://root:@localhost:3306/testdb?charset=utf8mb4'
但在将mysql升级到8.0之后,所有表都是使用UTF8MB4排序规则创建的。
如:
class Topic(db.Model, CoModel):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(168))
content = db.Column(db.Text)
==
CREATE TABLE `topic` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(168) COLLATE utf8mb4_general_ci DEFAULT NULL,
`content` text COLLATE utf8mb4_general_ci ,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
我应该自定义name=db吗。列(db.String(168,collation=“utf8\u general\u ci”))
UTF8MB4擅长支持大量字符编码。
我是否应该默认配置utf8mb4并在任何地方使用它?
展望未来,您应该对几乎所有CHAR/VARCHAR/TEXT列使用utf8mb4。
字符集utf8mb4
基本上涵盖了世界上所有的字符集。如果您的客户端将字符编码为UTF-8
(外部等效于utf8mb4),则utf8mb4是好的。
从utf8
移动到utf8mb4
很好。前者是后者的子集。不同的是表情符号和一些中国人。
将latin1
与utf8
或utf8mb4
混在一起是可能的,但是这个论坛充满了搞砸的程序员/dba。
8.0将默认值更改为utf8mb4有很多好的理由。
请注意MySQL的xxxx_yyy_ci惯例是适用于字符集xxxx的归类。这utf8_general_ci属于utf8,而不是utf8mb4。
"字符集"是一种编码。排序规则是一组用于比较字符串的规则。示例:应将'A'
视为等于'a'
。
问题内容: 我是OOP范式的新手,所以可能对此问题有一个简单的解释… 您是否总是需要在类中声明公共对象范围的变量?例如: 在此代码中,即使是唯一声明的变量,也一样可访问和可用-似乎就像我将其声明为public一样。 如果未声明的类变量始终可以这样访问,那么将它们全部预先声明的意义何在? 问题答案: 该变量不是未初始化的,只是未声明的。 在类定义中声明变量是提高可读性的一种方式。另外,您可以设置可访
问题内容: 我注意到,如果我对打开的文件进行迭代,则无需“读取”该文件即可更快地对其进行迭代。 即 比 第二个循环将花费大约1.5倍的时间(我在完全相同的文件上使用了timeit,结果是0.442对0.660),并且会得到相同的结果。 所以-我什么时候应该使用.read()或.readlines()? 由于我一直需要遍历正在读取的文件,并且在学习了艰难的方式之后,.read()在大数据上的运行速度
问题内容: 我正在尝试使用 BufferedReader 通过URL上的InputStreamReader 从Web文档中读取文本(到某些Apache服务器上的文件)。 现在,这很好。但是显然,我希望读者不要只读一行,而应该读文件中的所有行。 查看BufferedReader API,以下代码应做到这一点: 即在有更多行时读取所有行,在没有更多行时停止。但是,此代码不起作用-读者 永远不会 报告
问题内容: 为什么以及何时应该在php中使用该函数?使用后是否应该始终使用它?我读到我必须使用它来防止会话固定,这是唯一原因吗? 问题答案: 什么啊 就像函数名称所说的那样,它是一个函数,它将用新的ID替换当前的会话ID,并保留当前的会话信息。 它有什么作用? 它主要有助于防止会话固定攻击。会话固定攻击是恶意用户试图利用系统中的漏洞固定(设置)另一个用户的会话ID(SID)的地方。这样,他们将拥有
问题内容: 有什么区别?什么时候应该使用容量为1的对抗? 问题答案: SynchronousQueue更像是一个传递,而LinkedBlockingQueue仅允许单个元素。区别在于对SynchronousQueue的put()调用直到有相应的take()调用 才返回 ,但LinkedBlockingQueue的大小为1,则put()调用(对空队列)将立即返回。 我不能说自己曾经直接使用过Sync
问题内容: 我对使用和翻译有疑问。我了解到,在模型中,我应该使用。但是还有其他地方我也应该使用吗?表单定义呢?它们之间是否存在性能差异? 编辑: 还有一件事。有时候,代替被使用。正如文档所述,仅在将字符串显示给用户之前,才将字符串标记为要翻译,并在可能的最新情况下进行翻译,但是我在这里有点困惑,这与功能相似吗?我仍然很难决定在模型和表格中应该使用哪个。 问题答案: ugettext() 与 uge