mysql数据库连接地址utf8_在Python中连接到MySQL数据库时UTF8不工作

我正在努力使Python更好地使用UTF-8编码的MySQL数据库,例如,挪威字符æøå。我找了好几个小时,但没能找到像预期的那样有效的东西。以下是从数据库中提取的示例表:mysql> select * from my_table;

+----+-----------------+

| id | shop_group_name |

+----+-----------------+

| 1 | Frukt og grønt |

| 2 | Kjøtt og fisk |

| 3 | Meieriprodukter |

| 4 | Frysevarer |

| 5 | Bakevarer |

| 6 | Tørrvarer |

| 7 | Krydder |

| 8 | Hermetikk |

| 9 | Basisvarer |

| 10 | Diverse |

+----+-----------------+

10 rows in set (0.00 sec)

所以数据肯定是UTF-8编码的。但是,当运行下面的Python代码时,它不会给出int UTF-8的输出。有什么问题吗?它与压缩无关;cursor.execute(query)返回的元组已经搞乱了编码。在

^{pr2}$

allResults字典现在包含:{

'my_table': [

{

'id': 1,

'shop_group_name': 'Fruktoggr\xf8nt'

},

{

'id': 2,

'shop_group_name': 'Kj\xf8ttogfisk'

},

{

'id': 3,

'shop_group_name': 'Meieriprodukter'

},

{

'id': 4,

'shop_group_name': 'Frysevarer'

},

{

'id': 5,

'shop_group_name': 'Bakevarer'

},

{

'id': 6,

'shop_group_name': 'T\xf8rrvarer'

},

{

'id': 7,

'shop_group_name': 'Krydder'

},

{

'id': 8,

'shop_group_name': 'Hermetikk'

},

{

'id': 9,

'shop_group_name': 'Basisvarer'

},

{

'id': 10,

'shop_group_name': 'Diverse'

}

]

}

我真的看不出我做错了什么。我在Ubuntu中用Python2.7.6运行测试。在

UTF-8更改表

我尝试将表更改为UTF-8,方法是转储数据库,更改转储文件中的字符集和排序规则,然后将其插入到新的数据库中。例如,转储文件的这一部分对应于上面的示例。事情是这样的:DROP TABLE IF EXISTS `my_table`;

/*!40101 SET @saved_cs_client = @@character_set_client */;

/*!40101 SET character_set_client = utf8 */;

CREATE TABLE `my_table` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`shop_group_name` varchar(100) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1;

/*!40101 SET character_set_client = @saved_cs_client */;

我把这部分改成:DROP TABLE IF EXISTS `my_table`;

/*!40101 SET @saved_cs_client = @@character_set_client */;

/*!40101 SET character_set_client = utf8 */;

CREATE TABLE `my_table` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`shop_group_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;

/*!40101 SET character_set_client = @saved_cs_client */;

然而,这仍然行不通。输出仍与上述相同。运行SELECT CHARACTER_SET_NAME FROM information_schema.columns WHERE TABLE_NAME = 'my_table';现在生成{}。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值