Python - 准确显示MySQL数据库中的数据

时间:2014-05-13 15:01:27

标签: python mysql django

我使用Django开发我的Web服务。 我有一个数据库名称是'django_dulichdb',并有一个表'polls_dulich'。 我设置了CHARACTER SET utf8和COLLATE utf8_general_ci,但是当它被python代码获取时,数据库和数据之间仍然存在差异。就是这样

输入SHOW variables LIKE '%character_set%';后,这是我的字符集

> | Variable_name            | Value                      |
> +--------------------------+----------------------------+ | character_set_client     | latin1                     | |
> character_set_connection | latin1                     | |
> character_set_database   | utf8                       | |
> character_set_filesystem | binary                     | |
> character_set_results    | latin1                     | |
> character_set_server     | latin1                     | |
> character_set_system     | utf8                       |

| character_sets_dir       | /usr/share/mysql/charsets/

1。在mysql中,我输入

select * from polls_dulich

结果是真的。它显示正确的越南语

tp://travelhanoi.com.vn/Data/ResizeImage/~/userfiles/files/diem du lich ha noi / van_mieu_quoc_tu_giamx131x99x2.jpg |河内| VănMiếu,banđầupànơihọccácáchoàngtử,saumởrộngthunhậncảcáchọctrògiỏisongongiênhạ。 VănMiếuQuốcTửGiambanđầupànơigọcủcáchoàngtử,saumởrộngthunhậncả...

2>在终端中,我输入

python select.py

调用select.py。那是select.py

import MySQLdb as mdb
con = mdb.connect('localhost', 'root', '1', 'django_dulichdb');
with con:
cur = con.cursor()
    cur.execute('SET NAMES utf8;')

    cur.execute("SELECT * FROM polls_dulich")

    for i in range(cur.rowcount - 10):

        row = cur.fetchone()
        print (i+1),row[4]

结果就是那样

2ChùacóquihoạttÆ°Æ¡ngá'»'igá»ngồmcổng tam quan,phÆ°Æ¡ngÄ'ình,haidãy dảivÅ©vÃnhÃthá»mẫu。 CáckiếntrúcnÃytuymá»>​​iÄ'°°»£ctrùngtutvïnăm1954nhÆ°ngáng«ngiữ''°°»£ctnnhcổtruyá »n trong ...

我不知道为什么会这样。请帮帮我。非常感谢:(

1 个答案:

答案 0 :(得分:0)

Whowww,非常简单:D。当遇到这样的麻烦时,这是任何人的答案只需修改select.py:

# -*- coding: utf-8 -*-
# code above for using utf8
import MySQLdb as mdb
import sys
reload(sys)
con = mdb.connect(host='localhost',
                     user='root',
                     passwd='1',
                     db='django_dulichdb',
                     charset='latin1',
                     use_unicode=False);
with con:
    cur = con.cursor()
    cur.execute("SELECT * FROM polls_dulich")
    for i in range(cur.rowcount - 10):     
        row = cur.fetchone()
        print (i+1),row[4]

:d。可以帮助别人。