簡體   English   中英

MySQL在Python中整理utf8樣式字符串比較

[英]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的ucapython實現詹姆斯陶伯。 但是,這有助於排序,但不能在比較兩個字符串是否在MySQL中使用utf8 Unicode CI排序規則相同。

有沒有辦法在Python中比較這兩個字符串的MySQL方式?

現在,為了檢查條目是否已存在於python中的表中,我最初加載表中存在的所有名稱,並且只有在表中不存在時才嘗試插入。

你這樣做是錯的。 對表執行查詢以查看該條目是否已存在,或嘗試插入,並捕獲異常。

那么COLLATE utf8_bin怎么COLLATE utf8_bin

它用於比較二進制格式的字符( 嚴格比較 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM