djangodb.connection.cursor.fetchone()raw sqlがそうでない場合、emty結果を返します

StackOverflow https://stackoverflow.com/questions/7415029

質問

データベースに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

適切に値を返します。

どこで間違っていますか?助けてください!

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top