我知道之前已经问过这个问题,但所提出的解决方案似乎不起作用。 我正在尝试将文本插入表格,但我一直这样:
Warning: Incorrect string value: '\xEBrt of...' for column 'title' at row 1
有问题的角色是:ë
表格如下:
CREATE TABLE `rstest_article` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`source_id` int(11) NOT NULL,
`title` varchar(200) NOT NULL DEFAULT '',
`link` varchar(200) NOT NULL DEFAULT '',
`content` longtext NOT NULL,
`description` longtext NOT NULL,
PRIMARY KEY (`id`),
KEY `rstest_article_89f89e85` (`source_id`),
CONSTRAINT `source_id_refs_id_c47b907b` FOREIGN KEY (`source_id`) REFERENCES `rstest_source` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=606 DEFAULT CHARSET=utf8;
我正在使用相同的字符集抓取另一个数据库中的文本,如下所示:
_cursor.execute('SELECT title,link,content,descr,channel FROM articles')
rows = _cursor.fetchall()
for row in rows:
article = Article(source=src,title=row[0],link=row[1],content=row[2],description=row[3])
article.save()
非常感谢任何帮助。
答案 0 :(得分:4)
尝试更改表格的排序规则。
ALTER TABLE rstest_article CHARACTER SET utf8 COLLATE UTF8_general_ci;
或仅更改一列的排序规则。
ALTER TABLE rstest_article MODIFY COLUMN title varchar(200) DEFAULT '' CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
您还可以查看您的python代码,以及如何存储标题。
title = u'unicode_string'.encode('unicode_escape')
答案 1 :(得分:0)
你需要转义特殊字符,Mysqldb有escape_string函数用于转义特殊字符:
假设一个变量标题存储字符串需要在db。的标题列中输入。
title = MySQLdb.escape_string(title)
为了从标题字符串中转义'和“,您必须创建类似以下内容的查询:
q ='''插入rstest_article(标题)值(“%s”)'''%(标题)
这应解决问题:)