Bot pour VK sur Python avec MySQL dans une heure, partie 2

Préface


Je m'excuse pour le fait que je n'ai pas écrit sur le travail avec la base de données dans le premier article, mais cette partie vise à travailler avec MySQL.

La partie 3 sera une sorte d'ajout, où nous envisagerons de travailler avec le clavier pour le bot et ce cycle d'articles se terminera.

La préparation


Après le dernier article en main, nous devrions avoir ce code:

import vk_api from vk_api.utils import get_random_id from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType import pymysql.cursors import requests def get_connection(): connection = pymysql.connect(host='you_host', user='you_user', password='you_password', db='you_db' charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) return connection <anchor>habracut</anchor> vk_session = vk_api.VkApi(token="a6f87v8c9a9sa87a7af9a0f9f9v8a6s6c5b5m6n8bds09asc8d7b87d87bd87n") vk = vk_session.get_api() longpoll = VkBotLongPoll(vk_session, "637182735") #  for event in longpoll.listen(): if event.type == VkBotEventType.MESSAGE_NEW: #       if event.obj.text != '': #       if event.from_user: #  vk.messages.send( user_id=event.obj.from_id, random_id=get_random_id(), message=event.obj.text) 

Créons un bot qui nous donnera un résultat positif ou négatif. Par exemple, «Life» et «Dead». Saisissez-le ensuite dans la base de données et envoyez-nous ce résultat à l'avenir.

Tout d'abord, nous devons avoir notre propre base de données avec une table prête à l'emploi.

Si quelqu'un ne sait pas comment créer des tables, voici le code que vous devez insérer dans la console mysql:

 CREATE DATABASE `firstbot`; CREATE TABLE `mode`(Id_User INT(11), Mode VARCHAR(6) DEFAULT("NOT"), PRIMARY KEY(Id_User)); 

Sur cela le cadre de notre table sera prêt. Plus d'informations sur la création et la modification de tables peuvent être trouvées sur off. site Web (le lien sera ci-dessous).

Créez une fonction qui renverra aléatoirement Dead ou Live:

 #   random import random def random_mode(): #      1  200 return random.choice(["Live","Dead"]) 

Nous devons maintenant créer une fonction qui envoie nos valeurs à la base de données.

 def add_to_database(function_mode, x): #   connection = getConnection() #     cursor = connection.cursor() #  sql = "INSERT INTO mode (Id_User, Mode) VALUES (%s, %s) ON DUPLICATE KEY UPDATE Mode = %s" #       cursor.execute(sql, (x, function_mode, function_mode)) #  connection.commit() #  connection.close() #  return function_mode 

Nous avons créé une fonction qui va ajouter une personne à la base de données ou terminer son travail, s'il est déjà là. Dans notre cas, tout ce qui se passe à ON DUPLICATE KEY UPDATE met nos résultats dans la base de données. Si la base de données a déjà une colonne avec l'ID de notre utilisateur, la nouvelle valeur n'est pas entrée dans la base de données, mais est mise à jour dont ON DUPLICATE KEY UPDATE est responsable.

Mais outre le fait que nous entrons des valeurs dans la base de données, nous devons les obtenir. Pour ce faire, créez une telle fonction.

 def select_from_database(x): connection = get_connection() cursor = connection.cursor() sql = "SELECT Mode FROM mode WHERE Id_User = %s" cursor.execute(sql, (x,)) #        for i in cursor: mode_send = i['Mode'] #      if cursor.fetchall() == (): mode_send = '   ' connection.close() return mode_send 

cursor.fetchall () décompresse la demande que nous recevons et l'affiche. En utilisant la condition, nous vérifions si l'enregistrement dans la base de données est exact. Si ce n'est pas le cas, nous lui attribuons la valeur d'avertissement souhaitée.
Il ne nous reste plus qu'à collecter complètement le code et à ajouter quelques lignes pour que tout fonctionne comme nous le souhaitons.

 if event.obj.text == '': if event.from_user: id_user = event.obj.from_id vk.messages.send( user_id=event.obj.from_id, random_id=get_random_id(), message=" : " + add_to_database(random_mode(), id_user)) if event.obj.text == ' ': if event.from_user: idUser = event.obj.from_id vk.messages.send( user_id=event.obj.from_id, random_id=get_random_id(), message=" : " + select_from_database(id_user) 

Et donc nous obtenons une réponse de notre bot



Résumé


Avec l'aide du travail effectué, nous avons créé un bot qui peut fonctionner avec MySQL. Cela ne met pas fin à sa fonctionnalité. Elle est beaucoup plus large et plus large, et limitée uniquement par votre imagination.
Le code n'est pas idéal et je ne l'ai écrit que pour montrer comment MySQL fonctionne. Si vous connaissez mieux les méthodes, n'hésitez pas à les utiliser. J'accepterai également toute aide pour améliorer le code actuel.

Liens utiles


Page officielle de PyMySQL
Page officielle de MySQL
Documentation PyMySQL en russe
Documentation Vk_api
Document API Vkontakte
Le code du bot lui-même

Source: https://habr.com/ru/post/fr452210/


All Articles