djangodb.connection.cursor.fetchone()raw sqlがそうでない場合、emty結果を返します
-
30-10-2019 - |
質問
データベースにRAW SQLクエリを実行するCusom Querysetにメソッドがあります。
class QuerySet(models.query.QuerySet):
def get_short(self, language_code='en'):
"""Returns shortest name for given language"""
cursor = connection.cursor()
cursor.execute('''SELECT t.name FROM translation t, name n
WHERE n.id IN (%s)
AND t.link_id = n.id
AND t.lang_id = %s
ORDER BY CHAR_LENGTH(t.name)
LIMIT 1''', [','.join(["'%s'" % obj.pk for obj in self]), get_language(language_code).pk])
name = cursor.fetchone()
if name:
return name[0]
しかし、それは空の結果を返します。 cursor.fetchone()
戻る None
価値の代わりに。同じデータベースでraw SQLを実行するとき:
SELECT t.name FROM translation t, name n
WHERE n.id IN ('166','167')
AND t.link_id = n.id
AND t.lang_id = 40
ORDER BY CHAR_LENGTH(t.name)
LIMIT 1
適切に値を返します。
どこで間違っていますか?助けてください!
正しい解決策はありません
所属していません StackOverflow