3

我在我编写的 Django 命令中遇到了一个痛苦的错误,该命令正在解析一组数据。该脚本解析数据、构建 ORM 对象并尝试保存它。保存时,出现以下错误 - AttributeError: 'Cursor' object has no attribute '_last_executed' 我的数据库设置为 utf-8

在线进行大量研究以尝试解决此问题并没有太大帮助。我发现的最接近的是这个错误:光标'对象没有属性'_last_executed

“修复”是在我的字符串上调用 unicode() 。这很有效,直到我有了带撇号的字符串,例如 u'aunt\u2019s' - 然后事情很快就崩溃了。

因此,以上内容使我相信最初的光标问题与编码有关。我对编码的理解不足以真正理解这个问题。

我试过手动使用编码、解码调用,但没有运气。

我应该如何解决这个问题?它似乎是 Django 错误和理解编码的混合体。

一些可能有帮助的代码片段

c=urllib2.urlopen(page_url)
soup=BeautifulSoup(c.read())
my_string = soup.find('title')['content']
my_ormObj = Foo()
foo.title = my_string
foo.save()

上面的代码片段是我正在使用的那种流程,在某些情况下会产生上面列出的错误。我尝试使用 my_string 并对其进行更改,它给出了我在第三段中列出的问题。

4

1 回答 1

1

好的,如果它与编码有关,那么您可能应该utf-8在保存之前对字符串进行编码,就像数据库的相同编码一样。

我建议你尝试这种方式:

foo.title = my_string.encode('utf-8')
foo.save()

假设它my_string已经是 Unicode 是公平的,因为您发布了这个示例:u'aunt\u2019s',这让我认为您在一些错误转储 Django/Python throw 中阅读了它。

重要提示:忘记那些unicode()转换。如果字符串使用 ASCII 以外的其他编码(它们可能是),则使用该转换将引发错误。

那确实是unicode:右单引号。

我希望这有帮助!

于 2013-06-10T23:04:59.867 回答