Форум сайта python.su
есть код
c=db.cursor()
c.execute('use archive')
c.execute('Mail_Warning')
while (c.fetchone() <> ''):
t = c.fetchone()
print “%s %s %s %s %s %s\n”%(t,t, t, t, t, t)
db.close()
как красиво сделать перебор всех записей (record) в переменной c?
как узнать их кол-во?
БД MSSQL платформа WIN.
Офлайн
curs = conn.cursor()
curs.execute('SELECT foo, bar FROM baz')
print “We will fetch %d records” % curs.rowcount
for i, rec in enumerate(curs.fetchall()):
print “rec %d: %s” % (i+1, rec)
Отредактировано (Март 13, 2008 13:45:05)
Офлайн
qmanЭтот код распечатает только половину строк из результата выборки, тк вызов fetchone каждый раз возвращает очередную строку из результирующего множества.while (c.fetchone() <> ''): t = c.fetchone() print "%s %s %s %s %s %s\n"%(t[0],t[1], t[2], t[3], t[4], t[5])
row = curs.fetchone() while(row): ... row = curs.fetchone()
def fetchone_dict(c): res_dict = {} res_tuple = c.fetchone() if not res_tuple: return res_tuple for i, col_val in enumerate(res_tuple): res_dict[c.description[i][0]] = col_val return res_dict ... row = fetchone_dict(curs) while(row): print row['col1'], row['col2'] ... row = fetchone_dict(curs)
Офлайн
qmanНа всякий случай универсальный способ
как узнать их кол-во?
Офлайн
balu, это вернет кол-во записей в таблице, а не в выборке.
Офлайн
всем 2 =) или я не понял вопроса
…
print cursor.rowcount
…
пардон, у j2a таки было в коде) не заметил
Отредактировано (Март 13, 2008 18:07:49)
Офлайн
slivlenselect count(*) from TABLE where mainkey > 1
balu, это вернет кол-во записей в таблице, а не в выборке.
slav0nicТвой вариант только для Python-DBAPI. Мой для SQL-92 ;)
всем 2 ;) или я не понял вопроса
Отредактировано (Март 13, 2008 17:31:07)
Офлайн
slav0nicПравильно понял, но их там 2 :)
всем 2 smile или я не понял вопроса
Офлайн
baluА если в запросе будет GROUP BY или выборка будет из 10 таблиц? :)
Твой вариант только для Python-DBAPI. Мой для SQL-92 wink
Офлайн
slivlenSELECT count (*) FROM (SELECT * FROM TABLE…)
А если в запросе будет GROUP BY или выборка будет из 10 таблиц?
Офлайн