Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 5, 2007 13:44:11

aliens
От:
Зарегистрирован: 2007-08-14
Сообщения: 135
Репутация: +  1  -
Профиль   Отправить e-mail  

QSqlQuery,узнать кол-во результатов?

Подскажите, а как узнать кол-во результатов, полученых от базы данных? например,для узнавания кол-ва полученых строк, можно использовать query.size(). А для узнавания столбцов? Для прмиера запрос: SELECT * FROM table, то получу query.value(0) = 1, query.value(1) = test
Как узнать кол-во value?



Офлайн

#2 Дек. 5, 2007 15:48:13

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

QSqlQuery,узнать кол-во результатов?

а база данных какая?
а то какой-то незнакомый интрефейс методов =)
но наверное что-то типа len(query.value) или len(query.value())



Офлайн

#3 Дек. 5, 2007 16:55:46

aliens
От:
Зарегистрирован: 2007-08-14
Сообщения: 135
Репутация: +  1  -
Профиль   Отправить e-mail  

QSqlQuery,узнать кол-во результатов?

shiza
а база данных какая?
а то какой-то незнакомый интрефейс методов =)
но наверное что-то типа len(query.value) или len(query.value())
ну база то MYSQL. Соединяюсь через QSqlQuery (Qt4).. Ваши оба варианты не работают :) проверял до напсиания



Офлайн

#4 Дек. 5, 2007 17:59:09

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

QSqlQuery,узнать кол-во результатов?

Хм. не разу не пробовал через QT.
Поэтому в голову приходит только извращенный вариант.
—————-
s = 0
while 1:
try:
query.value(s)
except:
break
s += 1
size = s+1
—————-

А вот кстати в QSqlQuery Class Reference написано:
Using SELECT * is not recommended because the order of the fields in the query is undefined.



Офлайн

#5 Дек. 5, 2007 18:18:58

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

QSqlQuery,узнать кол-во результатов?

Как бы сказать повежливей. Когда делается SQL-запрос, подразумевается, что тот кто его делает, знает структуру таблиц, а не наугад “select * from foo”. Это раз. Использовать Qt-шный интерфейс к БД в Python, когда есть Python DB API нужно осмысленно. Соответственно, иметь представление, что это биндинг к C++-библиотеке, и API отнюдь не pythonic. И что нужно искать в документации к Qt. Это два. Ну и желательно приводить полный код программы, это три.


#!/usr/bin/python
# encoding: utf-8
from PyQt4 import QtSql

db = QtSql.QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('dev.sqlite')
db.open()
query = QtSql.QSqlQuery('SELECT * FROM pyobject_models_project_version')
query.exec_()
while query.next():
print u“-”*10
rec = query.record()
for idx in xrange(rec.count()):
print u“%s: %s” % (unicode(rec.fieldName(idx)),
unicode(rec.value(idx).toString()))
db.close()

$ ./pyqtsql.py
----------
version: 0.2.1
released_at: 2007-02-27 21:08:00.0
url: http://cheeseshop.python.org/pypi/pytils/0.2.1
id: 1
project_id: 1
----------
version: 0.0.1-dev_r98
released_at: 2007-06-17 00:01:14.0
url: http://cheeseshop.python.org/pypi/YDbf/0.0.1dev-r98
id: 2
project_id: 2



Офлайн

#6 Дек. 6, 2007 02:31:18

aliens
От:
Зарегистрирован: 2007-08-14
Сообщения: 135
Репутация: +  1  -
Профиль   Отправить e-mail  

QSqlQuery,узнать кол-во результатов?

j2a
спасибо.
Ну я доку по Qt4 и читаю…
Просто интересно стало… Думал это делать легче можно)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version