Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 4, 2019 09:09:31

y_starynets
Зарегистрирован: 2019-04-11
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Запрос по ID

Всем доброго времени суток. Есть такая задача нужно например каждые 20 мин считывать ряд значений по Id. На данном моменте я считываю по определенному. Подскажите пожалуйста как считывать по Id новые значения, не трогая прошлые

 cursor.execute('SELECT DewpointActual, TemperatureActual as count FROM dbo.Alawa WHERE Id = 80 ')
results = cursor.fetchall()

Офлайн

#2 Сен. 4, 2019 09:36:11

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Запрос по ID

давайте другие id в запрос, чтобы получить другую выборку. Это не очиведно?



Офлайн

#3 Сен. 4, 2019 09:54:11

y_starynets
Зарегистрирован: 2019-04-11
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Запрос по ID

вы не поняли прога должна работать в автомате, а не в ручную

Офлайн

#4 Сен. 4, 2019 10:28:11

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Запрос по ID

y_starynets
вы не поняли прога должна работать в автомате, а не в ручную
“вручную” работающая прогрмаа это вообще как?

y_starynets
Есть такая задача нужно например каждые 20 мин считывать ряд значений по Id.
Вот я читаю ваше первое сообщение. Вы получаете данные из БД по ID. Ну значит эти самые ID программе известны.
y_starynets
На данном моменте я считываю по определенному.
Хороша и любовна русская языка. По чему определенному вы считываете неясно, но могу догадаться, что по определенному ID. Это и так было в общем-то понятно, что считывать данные можно только по определенному ID, как это делать по неопределенному - загадка.
y_starynets
Подскажите пожалуйста как считывать по Id новые значения, не трогая прошлые
Ну логично предположить, что для того чтобы получить другую выборку по ID, вам надо подставлять в запрос другие ID.



Офлайн

#5 Сен. 4, 2019 12:12:20

y_starynets
Зарегистрирован: 2019-04-11
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Запрос по ID

Я с вами согласен. Но я пишу в запросе в ручную а мне нужно чтобы оно подставляло само, без моего вмешательства

Офлайн

#6 Сен. 4, 2019 12:21:03

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Запрос по ID

y_starynets
Я с вами согласен. Но я пишу в запросе в ручную а мне нужно чтобы оно подставляло само, без моего вмешательства
Ну вам же знакомо понятие переменная? Программы написанные на императивных языках вообще в принципе так работают - это некий набор действий, который изменяет значения переменных. А подставить значение переменной в строку можно множеством способов



Офлайн

#7 Сен. 5, 2019 09:55:38

Rafik
Зарегистрирован: 2018-09-04
Сообщения: 231
Репутация: +  27  -
Профиль   Отправить e-mail  

Запрос по ID

Весь набор ID известен скрипту, который будет запускать запрос? Если да, то перебрать в цикле все ID или в запрос подставить диапазон значений и получить выборку по всем ID.
Если не известно последнее, имеющееся в БД ID, то можно же запросить max(id).

 # вот полный аналог твоего cursor.execute('SELECT DewpointActual, TemperatureActual as count FROM dbo.Alawa WHERE Id = 80 ')
my_new_id = 80
zapros = 'SELECT DewpointActual, TemperatureActual as count FROM dbo.Alawa WHERE Id = {} '.format(my_new_id)
cursor.execute(zapros)
Надеюсь понятно, что значение my_new_id должно вычисляться скриптом до формирования строки zapros.

Отредактировано Rafik (Сен. 5, 2019 09:57:01)

Офлайн

#8 Сен. 11, 2019 15:45:58

y_starynets
Зарегистрирован: 2019-04-11
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Запрос по ID

Rafik
Cпасибо, все работает. Скажите еще пожалуйста как мне в Id передать список значений например

Офлайн

#9 Сен. 13, 2019 09:22:03

Rafik
Зарегистрирован: 2018-09-04
Сообщения: 231
Репутация: +  27  -
Профиль   Отправить e-mail  

Запрос по ID

y_starynets
…как мне в Id передать список значений например
Если требуется использовать в запросе IN, тогда можно весь список значений объединить в строку с разделителем “запятая” и подставить format-ом в текст запроса. Например, для sqlite, как-то так
 my_ids = ",".join([str(_) for _ in range(0,10,2)])  # Записи с чётными id от 0 до 9 
zaproz = "... WHERE Id  IN ({})".format(my_ids)  # Хвост запроса будет выглядеть так. Многоточием обозначено место начала строки запроса

Отредактировано Rafik (Сен. 13, 2019 09:24:13)

Офлайн

#10 Сен. 13, 2019 11:13:25

y_starynets
Зарегистрирован: 2019-04-11
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Запрос по ID

Rafik
Спасибо все работает

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version