我有以下MySQL表Mysql的整理UTF8風格的字符串對比中蟒蛇
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 |
+--------+
注意該條目是路易莎。這實際上是一個'í'。 正如你所看到的,我已經指定了名稱字段的排序規則以COLLATE utf8_unicode_ci。我有一個加載一些名字到這個表和字段名的Python腳本是獨一無二的,並與設置爲utf8_unicode_ci的整理,我無法插入路易莎在這個表,因爲它認爲我和í到是相同的。現在,爲了檢查這個條目是否已經存在於python的表中,我最初加載了表中的所有名稱,並且只在它已經不存在於表中時才嘗試插入。現在,問題是蟒蛇正在處理我和是不同的。
我在 http://www.cmlenz.net/archives/2008/07/the-truth-about-unicode-in-python中讀到它,python不支持排序規則,而且我們有James Tauber寫的python implementaion of the uca。然而,這有助於排序,但不能在比較兩個字符串在MySQL中是否與utf8 unicode ci collation相同。
有沒有辦法在Python中比較這兩個字符串的mysql方式?
是的,無論是他們的,雖然我相信嘗試插入,然後抓會更有效,因爲它會降低查詢到數據庫的數量應該解決這個問題。不過,我也想知道python是否提供了一些強制執行這種字符串比較的方法。 –