0ralo
@0ralo
Python backend developer

Как работать с pymysql?

Здравствуйте, у меня есть вопрос который достаточно сложно правильно изложить.Я не понимаю как мне эффективно работать с Pymysql в питоне.Синтаксис питона я хорошо знаю, mysql - хуже, но работать могу.Но за работой у меня возникает куча проблем по типу загрузки данных в бд.У меня был проект, с которого я начинал изучение питона, это был бот на вк.Там я использовал Json как бд, то есть рядом с исполняемым файлом лежал Json с данными пользователей, я открывал его в коде, читал/писал и сохранял.Естественно это не совсем правильно, тк можно делать запросы к бд и получать нужную мне информацию, но я столкнулся с некоторыми проблемами.Самая непонятная из них это сохранение разных типов данных:
def setdigit(self, id, data):
		with self.connect:
			cur = self.connect.cursor()
			cur.execute(f"UPDATE DB.USERS SET {data.keys()[0]}={data[data.leys()[0]]} WHERE id={id}")

	def setstring(self, id, data):
		with self.connect:
			cur = self.connect.cursor()
			cur.execute(f"UPDATE DB.USERS SET {data.keys()[0]}='{data[data.leys()[0]]}' WHERE id={id}")

Я передаю функции нужный ID и {"Ключ":"значение"}
И каждый раз мне нужно вызывать функцию записи числа или строки, это не особо удобно, еще я не особо понимаю, как правильно загружать данные в базу именно с питона.Если сделать функцию принимающую все аргументы отдельно:
def setdigit(self, id, key, value):
		with self.connect:
			cur = self.connect.cursor()
			cur.execute(f"UPDATE DB.USERS SET {key}={value} WHERE id={id}")

То естественно вызов такой функции становится более грамостским, хотя возможно так правильнее.Вобщем можете ли вы объяснить, как правилнее работать, а в идеале приложить кусок кода с продакшена, где используется pymysql что бы я понял как связать питон и бд.Спасибо!
  • Вопрос задан
  • 342 просмотра
Решения вопроса 1
enotcode
@enotcode
Front-end developer
Можете посмотреть на MongoDB. В ней как раз JSON-подобные документы, а в MySQL лучше не хранить так данные.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы