Не използвайте „инжектиране на низ“ във вашия SQL, освен в случаите, когато това е наистина необходимо, като str(DEPT) тук, за да изберете от каква таблица избирате. За всеки друг случай използвайте вместо това функцията за предаване на параметри на API на Python DB – тя ще цитира правилно нещата вместо вас и автоматично ще ви защити от атаки с „SQL инжекция“, наред с други неща. (Понякога може да бъде и по-бързо).
Тъй като MySQLdb използва злополучната нотация %s за параметрите, ето какво трябва да направите (също коригиране на стила, за да бъде съвместим с PEP8, не се изисква, но не може да навреди;-):
conn = MySQLdb.connect(host="localhost", user="user", passwd="pass", db="dbase")
cursor = conn.cursor()
q = 'SELECT * FROM %s WHERE course=%%s AND sec = %%s""" % (DEPT,)
cursor.execute(q, (CLASS, SEC))
%% s във форматирането на низа, което произвежда q стане единичен % всеки при форматиране, така че q остава с две поява на %s -- които execute попълва спретнато с правилно форматирани версии на CLASS и SEC . Всички str повикванията са излишни и т.н.
Като настрана, ако сте на Python 2.6 или по-нова версия, за форматиране на низ трябва да използвате новия format метод вместо стария % оператор - това ви спестява от нуждата от тези "удвоени % знаци", наред с други предимства. Не съм приложил тази промяна в горния фрагмент само в случай, че сте останали с 2.5 или по-стара версия (така че кодът по-горе работи във всяка версия на Python, вместо само в сравнително скорошни).