[英]MySQL collate utf8 style string comparison in Python
我有以下MySQL表
mysql> show create table names;
+-------+-----------------------------------------------------+
| Table | Create Table |
+-------+----------------------------- -----------------------+
| names | CREATE TABLE `names` (
`name` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |
+-------+-----------------------------------------------------+
現在,該表有以下記錄
mysql> select * from names;
+--------+
| name |
+--------+
| Luísa |
+--------+
請注意,該條目是Luísa 。 它實際上是'í'。 如您所見,我已將名稱字段的排序規則指定為COLLATE utf8_unicode_ci。 我有一個Python腳本,將一些名稱加載到此表中,並且字段名稱是唯一的,並且排序設置為utf8_unicode_ci,我無法在此表中插入Luisa ,因為它認為我和í是相同的。
現在,為了檢查條目是否已存在於python中的表中,我最初加載表中存在的所有名稱,並且只有在表中不存在時才嘗試插入。 現在,問題是python正在治療我和í是不同的。
我在http://www.cmlenz.net/archives/2008/07/the-truth-about-unicode-in-python中讀到它不支持整理,並且我們有一個由uca寫的uca的python實現詹姆斯陶伯。 但是,這有助於排序,但不能在比較兩個字符串是否在MySQL中使用utf8 Unicode CI排序規則相同。
有沒有辦法在Python中比較這兩個字符串的MySQL方式?
現在,為了檢查條目是否已存在於python中的表中,我最初加載表中存在的所有名稱,並且只有在表中不存在時才嘗試插入。
你這樣做是錯的。 對表執行查詢以查看該條目是否已存在,或嘗試插入,並捕獲異常。
那么COLLATE utf8_bin
怎么COLLATE utf8_bin
?
它用於比較二進制格式的字符( 嚴格比較 )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.