1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > mysql数据库连接地址utf8_在Python中连接到MySQL数据库时UTF8不工作

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

时间:2019-11-29 04:41:21

相关推荐

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';现在生成{}。在

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。