Найти - Пользователи
Полная версия: Запись в БД с условием
Начало » Python для новичков » Запись в БД с условием
1 2 3 4 5 6 7
py.user.next
Rodegast
Ты каждый из них будешь в функцию оборачивать что бы название поменять?
Это не смена названия на более понятное, это поднятие на более высокий уровень абстракции того действия, которое производится. Это как в математике есть абстрактные понятия +бесконечность и -бесконечность. Мы не знаем, что это, но мы можем с этим работать. И тут мы не знаем, как эти данные, полученные от устройства, сегодня или гипотетически завтра будут проверяться, но мы уже работаем с результатом этой проверки, как бы они ни проверялись, и работаем вполне успешно.

Rodegast
Видел сколько там методов?
Я тебе скажу больше: когда ты умеешь это делать, у тебя это делается в голове - то, чего у него даже близко в коде нет. Поэтому я просто разработал в голове ту программу, которая ему нужна, от начала до конца, потому что умею их разрабатывать. У меня есть этот набор навыков, и они постоянно срабатывают в воображении. Соответственно, я просто сверху вниз эту программу разработал и посмотрел, насколько его эта написанная программа близка к тому, что должно быть. Поэтому я знаю, какие методы должны быть у него в программе. И поэтому я знаю, что эта проверка данных должна быть вынесена, так как она отчётливо проводится как шаг алгоритма с предусловием и постусловием в той программе, которая у меня уже полностью написана в уме.

Ну и, написав в уме эту программу его, я свои мозги потренировал ещё раз. Мне нужно уметь, поэтому я всё время тренируюсь. И книжки читаю, и код пишу, и программы делаю. Потому что если этого всего не делать, то ты просто ничего не будешь уметь и будешь просто сидеть и всем рассказывать, какой ты замечательный - делать какой-то YouTube-канал, на нём рассказывать, какой язык ты считаешь лучше и прочей муйнёй заниматься. Заниматься чем угодно, только не программированием.
Rodegast
> это поднятие на более высокий уровень абстракции того действия

Вот этого я как раз и не увидел. У тебя как был вызов одного метода так он и остался.
py.user.next
Rodegast
Вот этого я как раз и не увидел. У тебя как был вызов одного метода так он и остался.
Вот об этом я тебе и говорю. Ты не знаешь даже, что такое уровни абстракции. Ты думаешь, что ты понимаешь ООП, но ты не понимаешь его. Поэтому-то ты и написать ничего не можешь. Не потому, что это сложно, а потому, что ты не умеешь это. Ты думал, что синтаксис языка выучишь и так ООП поймёшь? Ну, поздравляю, синтаксис языка, слово class и даже запуск этого всего никак тебя к ООП не приближает. Ты как не умел ничего строить, так и не умеешь. Уровни абстракции есть не только в ООП. И вообще их не в программировании придумали, они были ещё до него.
Rodegast
> Ты не знаешь даже, что такое уровни абстракции.

Ты не поверишь, но я в курсе не только того что такое абстракция, но даже прости Господи манадами пользуюсь. Так что вангуешь ты весьма плохо. Ну и да твоя функция не только написана не аккуратно, но и бессмысленна с точки зрения абстракций, во всяком случае в таком виде.
staxbel
Всем доброго вечера, был в отъезде, спасибо за ответы, но я так и не понял как лучше сделать?
Мусор там бывает только видов: 1q80, #1180, 11\xf80.

 out_srt = out.decode('сюда_вписать_кодировку_в_которой_вы_получаете_данные') # тут вы можете поймать исключение если у вас там будет таки реальный "мусор", поэтому лучше вставить его в блок try-excrpt и отслеживать DecodeError
if out_str.isdigit():
    #тут пишем в БД
else:
   #тут не пишем в БД
Не могу понять, как посмотреть кодировку в которой приходят данные. Если ставлю utf-8, получаю ошибку
 serial.serialutil.SerialException: could not open port 'COM3': PermissionError(13, 'Отказано в доступе.', None, 5)

Тут родилась другая идея, может ее проще реализовать? При получении данных, сравниваем с предыдущим значением, если значения совпадают - записываем в БД если нет - отправляем запрос еще раз.

p.s. Извините может за глупые вопросы, но я только учусь
Rodegast
> Мусор там бывает только видов: 1q80, #1180, 11\xf80.

Откуда он берётся? Приведи пример сообщения которое приходит.
staxbel
b' 1180'
Данные изменены 2021-04-04 22:51:02.401196
b' 118<'
Данные изменены 2021-04-04 22:51:03.775275
b' 118\x98'
Устройство работает через преобразователь AC4 (rs485-usb), когда прибор один подключен, все ок, но когда параллельно их несколько, получается такой мусор.
Rodegast
> когда прибор один подключен, все ок, но когда параллельно их несколько, получается такой мусор.

Если это из за помех, наводок и прочего, то можно этот “мусор” отфильтровывать.
 >>> int(bytearray( x for x in b' 118\x98' if 47 < x < 58 ))
118
staxbel
Rodegast
> когда прибор один подключен, все ок, но когда параллельно их несколько, получается такой мусор.Если это из за помех, наводок и прочего, то можно этот “мусор” отфильтровывать.
1180 не постоянное значение, оно меняется.
Rodegast
> 1180

В таком случае ты не можешь гарантировать что с устройства вообще приходит правильное значение. По какому протоколу оно подключено? Контроль чётности используется?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB