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

Socket TCP server + mySQL

18.09.2019, 10:45. Показов 2225. Ответов 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
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 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
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru