2014-10-18 62 views
0

我想知道什麼是最好的策略編碼symblols如\ alpha到MySQL數據庫並有效地查詢它。python腳本插入到MySQL數據庫 - 特殊符號 - unicode:搜索和存儲

我用「CHARSET = utf8」創建我的MySQL表。

import mysql.connector 
import urllib 
import re 
from mysql.connector import errorcode 
Connection = mysql.connector.connect(user='XXXX', password='XXXX', unix_socket="mysql.sock") 
Cursor = Connection.cursor() 
Cursor.execute('''CREATE TABLE IF NOT EXISTS `test` (
      `test_string` text NOT NULL, 
      `id` int(5) NOT NULL, 
      PRIMARY KEY (`id`), 
      UNIQUE KEY `id` (`id`) 
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
      ''') 
xml = unicode(urllib.urlopen('http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pmc&id=2174229').read(),'utf-8') 
Cursor.execute('''INSERT INTO `test` (`id`, `test_string`) VALUES ('''+"001"+", '"+re.escape(xml).encode("utf-8")+"');") 

下一個編碼字符串時,將它們插入到MySQL數據庫之前,我保證使用「.encode(‘UTF-8’)」來編碼成UTF-8和插入,當我使用保證逃串「重.escape「,然後插入。

接下來,我進入phpMyAdmin來看看數據行,例如

原始字符串

"generating the α- and β-APP", 

插入後,在數據庫中,我可以把它看作

"generating the α- and β-APP" 

但是,如果在查詢HTML頁面中包含「生成」數據庫的行後顯示,則符號α和β將在HTML頁面上正確顯示。我很困惑。

這是爲什麼?我有一個相關的問題是,現在如果我必須查詢MySQL數據庫中的這些特殊符號(α,β等),我該怎麼做?如果我錯過了任何明顯的問題,請原諒。

+0

分享一些代碼,使我們:> – QuakeCore 2014-10-18 12:19:19

+0

我不能整個代碼粘貼實在是太長了,我試圖抓住問題的實質。請看看 – suzee 2014-10-18 12:35:42

回答

0

好的,最後問題是特殊字符以某種方式轉換爲HTML代碼。所以,這並獲得成功

import HTMLParser 
h= HTMLParser.HTMLParser() 
h.unescape(test_string) 
0

嘗試以下操作:

(user='XXXX', password='XXXX', unix_socket="mysql.sock",charset='utf8',use_unicode=True) 

,去到phpMyAdmin和更改排序規則utf8_general_ci。

+0

我試過了。沒有幫助。 – suzee 2014-10-18 13:21:45

相關問題