首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >要插入到MySQL数据库中的python特殊符号- unicode :搜索和存储

问要插入到MySQL数据库中的python特殊符号- unicode :搜索和存储
EN

Stack Overflow用户
提问于 2014-10-18 12:13:39
回答 2查看 1.3K关注 0票数 0

我想知道将符号(例如\alpha )编码到MySQL数据库并有效地查询它的最佳策略是什么。

我用“MySQL”创建我的CHARSET=utf8表。

代码语言:javascript
复制
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“)将它们编码到utf8中,在插入之前确保使用"re.escape”转义字符串。

接下来我将进入phpMyAdmin,查看数据行,例如

原始字符串是

代码语言:javascript
复制
"generating the α- and β-APP", 

插入后,在数据库中,我可以将它视为

代码语言:javascript
复制
"generating the α- and β-APP"

但是,如果在查询包含从html页面上的数据库中“生成”的行后显示,则α和β符号将正确显示在HTML页面上。我很困惑。

为什么会这样呢?一个相关的问题是,如果我必须查询MySQL数据库中的这些特殊符号(α,β等),我该如何做呢?如果我遗漏了任何明显的问题,请原谅。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-20 04:58:08

好的,最后的问题是,特殊字符以某种方式被转换成HTML代码。所以,这就成功了

代码语言:javascript
复制
import HTMLParser
h= HTMLParser.HTMLParser()
h.unescape(test_string)
票数 -1
EN

Stack Overflow用户

发布于 2014-10-18 13:02:28

尝试以下几点:

代码语言:javascript
复制
(user='XXXX', password='XXXX', unix_socket="mysql.sock",charset='utf8',use_unicode=True)

然后转到phpmyadmin并更改排序规则utf8_general_ci。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26439606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档