-1

これには、データベースからのデータへのアクセスと、Pythonでのデータの操作が含まれます。データベース名はinb104で、car_detailsとcars_for_saleの2つのテーブルが含まれています。

これがこれまでの私のコードです

def top_N_models(carbrand, num_of_highest):
    connection = MySQLdb.connect(host='localhost', user='root', \
                                     passwd='root', db='inb104')
    cursor = connection.cursor()
    sql = str("SELECT model, COUNT(model) AS Count FROM \
              cars_for_sale WHERE make='"+carbrand+"' GROUP BY \
              model ORDER BY count DESC, model LIMIT "+str(num_of_highest))
    cursor.execute(sql)
    rows = cursor.fetchall()
    try:
            test = rows[0][0]
    except:
            print "No such make of car!"
    for row in rows:
            print str(row[0]), str(row[1])
    cursor.close()
    connection.close()

このコードを一連のテストケースで実行すると、次の結果が得られます。失敗したテストケースでは、「そのような車のメーカーはありません!」ではなく、何も返されないことを期待しています。

Trying:
top_N_models('BMW', 6)
Expecting:
3 152
X5 72
5 39
1 19
7 9
M3 9
ok
Trying:
top_N_models('TOYOTA', 10)
Expecting:
COROLLA 275
LANDCRUISER 193
RAV4 189
HILUX 179
CAMRY 137
ECHO 69
KLUGER 61
YARIS 56
AURION 22
TARAGO 22
ok
Trying:
top_N_models('HOLDEN', 1)
Expecting:
COMMODORE 426
ok
Trying:
top_N_models('EDSEL', 10)
Expecting:
No such make of car!
ok
Trying:
top_N_models('TOYOTA', 0)
Expecting nothing
**********************************************************************
File "__main__", line 34, in __main__
Failed example:
top_N_models('TOYOTA', 0)
Expected nothing
Got:
No such make of car!
Trying:
top_N_models('MINI', 1)
Expecting:
COOPER 34
ok
Trying:
top_N_models('HSV', 10)
Expecting:
CLUBSPORT 21
COUPE 5
MALOO 5
AVALANCHE 2
GTS 2
GRANGE 1
ok
1 items had no tests:
__main__.top_N_models
**********************************************************************
1 items had failures:
1 of   7 in __main__
7 tests in 2 items.
6 passed and 1 failed.
***Test Failed*** 1 failures.
4

1 に答える 1

1

rowsSQL ステートメントには があるため、空のリストになりますLIMIT 0

したがって、 をrows[0]返し、IndexErrorをトリガーしexceptます。

于 2012-05-23T03:50:55.223 に答える