Форум программистов, компьютерный форум, киберфорум
Python: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для kristow
0 / 0 / 2
Регистрация: 27.11.2013
Сообщений: 78

Socket TCP server + mySQL

18.09.2019, 10:45. Показов 2251. Ответов 3

Студворк — интернет-сервис помощи студентам
Все привет!
Пишу TCP сервер. Полученные данные я проверяю в mysql и сохраняю.
Проблема в том, что когда я сервер запустил, то все работает. Но если клиент подключается и делает запросы по mySQL, а я в базе поменял значения после старта TCP сервера, то сервер почему-то читает только старые данные... Скажите в чем ошибка? Не правильно подключаю mysql?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/env python3
import socket
from _thread import start_new_thread
from datetime import datetime, timedelta
import mysql
 
connMysql = mysql.getConnection()
 
def threaded(c, addr):
 
    global connMysql
    sn = 123
    oneRow = mysql.selectOne(connMysql, "Select * from base where `sn` = %s LIMIT 1", sn)
    print(oneRow)
    c.close()
 
host = "192.168.0.100"
port = 54444
 
 
def main():
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    s.bind((host, port))
    s.listen(5)
 
    while True:
        sock, addr = s.accept()
        print('Connected to :', addr[0], ':', addr[1])
        start_new_thread(threaded, (sock, addr))
 
 
if __name__ == '__main__':
    main()
Файл mysql
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import pymysql.cursors
 
def getConnection():
    connection = pymysql.connect(host='192.168.0.102',
                                 user='python',
                                 password='python',
                                 db='python',
                                 charset='utf8',
                                 cursorclass=pymysql.cursors.DictCursor)
    return connection
 
 
def selectOne(connMysql, SQL, value):
 
    if connMysql.open:
        cursor = connMysql.cursor()
    else:
        connMysql = getConnection()
        cursor = connMysql.cursor()
    cursor.execute(SQL, value)
    return cursor.fetchone()
Подскажите как нужно правильно подключать и использовать базы данных !?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.09.2019, 10:45
Ответы с готовыми решениями:

TCP server socket + client modbus
Добрый день. Есть tcp сервер с использованием socket и _thread. К серверу подключается устройство через интернет по tcp порту....

Windows socket server python + socket client js
Здравствуйте пытаюсь решить такую задачу, на веб странице реализовал soket клиент на js, и socket server, сокет сервер получает данные от...

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
Ajenti CentOS 6 Linux 2.6.32-573.7.1.el6.x86_64 x86_64 Добрый день. Перестал работать MySQL. Выводить такую ошибку: ERROR...

3
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
18.09.2019, 12:29
Цитата Сообщение от kristow Посмотреть сообщение
сервер почему-то читает только старые данные
а ты коммит в БД новых данных не забываешо сделать?

Цитата Сообщение от kristow Посмотреть сообщение
Подскажите как нужно правильно подключать и использовать базы данных !?
точно в соответствии с документацией))

Добавлено через 1 час 2 минуты
https://docs.python.org/3/libr... le-sqlite3
0
 Аватар для kristow
0 / 0 / 2
Регистрация: 27.11.2013
Сообщений: 78
18.09.2019, 12:45  [ТС]
Я по документации понял так, что commit() я делаю когда выполняю команду на добавление записи (Insert).
А для (Select) только вывожу полученные данные...
Спасибо, сейчас пропишу

Еще вопрос: как обработать ошибку попытки (Insert) при дублировании записи?
Code
1
2
raise errorclass(errno, errval)
pymysql.err.IntegrityError: (1062, "Duplicate entry '9-2019-09-14 00:00:00-2' for key 'device_id'")
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
18.09.2019, 12:54
Цитата Сообщение от kristow Посмотреть сообщение
как обработать ошибку попытки (Insert) при дублировании записи?
а как у нас в питоне обрабатываются исключения?
кроме того в sql можно написать запрос так, чтобы добавлял только если нет уже такой записи, тогда не будет ошибки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.09.2019, 12:54
Помогаю со студенческими работами здесь

Client - Server (with TCP/IP Socket)
Hi dear! Подскажите, пожалуйста, что поправить в моем коде, чтобы сервер не вырубался сразу после того, как умрет сокет, а ждал нового...

Client-Server TCP/IP socket
Здравствуйте! Я новичек в программирование, поэтому есть вопросы. Я подсоединил два ноутбука через switch. На одном из них (#1)...

Ошбка Can't connect to local MySQL server through socket '/tmp/mysql.sock' (11)
Есть сервер с mysql - если клиенты присоединятся к серверу БД через TCP/IP, то всё отлично и сервер держит и 300 и 500 одновременных...

Ошибка при старте mysql [2002] Can't connect to local MySQL server through socket
Доброго времени суток. Имеется VPS на Debian 6. Сегодня получил ошибку при старте mysql: ERROR 2002 (HY000): Can't connect to local...

Can't connect to local MySQL server through socket
Ubuntu 20.04 как исправить? быстрый гуглежь ничего не дал


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru