1

我在 django 中创建了一个 webapp/webservice 方法,它将 unicode 字符文件名存储在 DB 表中。我在views.py脚本上通过这种方法来做:

SubmissionContents(id=subid, filename=fn.decode('unicode_escape')).save()

我这样做是因为我遇到了一些 unicode 字符的文件名,这些文件名没有正确存储在数据库中(不管是什么原因,我仍然不知道)。这也是关于这个stackoverflow线程/链接的建议:

现在在后端,我有一个普通的 python 脚本,它使用 MySQLdb-python 模块来查询所述数据库。我的查询是这样的:

filename = (u"%s").encode('unicode_escape')
cursor.execute('select * from `submissioncontents` 
                where `submissioncontents`.`filename` = "%s"' 
                % filename.decode('unicode_escape'))

问题是没有返回匹配项,尽管我非常确定 DB 表中填充了这样的值。我应该如何正确进行查询?

提前致谢!

4

1 回答 1

0

检查正确的语法

cursor.execute("SELECT foo FROM bar WHERE baz = %s", [self.baz])

对于您的代码:

cursor.execute('select * from `submissioncontents` 
                where `submissioncontents`.`filename` = %s' 
                , [ filename.decode('unicode_escape') ] )

引用文档:

“不要对原始查询使用字符串格式!”

于 2013-02-02T18:39:29.230 回答