Sqlite3をTelegramボットに接続する

前書き

Python開発の初心者の多くにとって、問題が発生します-データベースを接続する方法は?私自身、開発当初はこのような問題に直面していました。トピックは非常に単純であることが判明しましたが、インターネット上には混乱を招く可能性のあるガイドがたくさんあります。このチュートリアルでは、例としてTelegramボットを使用しSqlite3データベース簡単に統合する方法を説明します





仕事の始まり

Python, . , . PyCharm, , SQLiteStudio .





. pyTelegramBotAPI ( - ).





pip install pyTelegramBotAPI
      
      



.py. :





import sqlite3
import telebot

bot = telebot.TeleBot("token")
      
      



sqlite3 — . "token" , BotFather. , .





@bot.message_handler(commands=['start'])
def start_message(message):
	bot.send_message(message.chat.id, ' ')
      
      



. " ", .





, .





SQLiteStudio. Database Add a database. Ctrl+O.





. . db, . , database. . . . Connect to the database. . : . . Add a table.





. test. (Ins). . , , NULL . id, INTEGER . . ID . .





user_id. INT, . user_name, STRING NULL. 2 user_surname username. , , .





.





. 2 .





conn = sqlite3.connect('db/database.db', check_same_thread=False)
cursor = conn.cursor()
      
      



, . , db, . , .





, .





def db_table_val(user_id: int, user_name: str, user_surname: str, username: str):
	cursor.execute('INSERT INTO test (user_id, user_name, user_surname, username) VALUES (?, ?, ?, ?)', (user_id, user_name, user_surname, username))
	conn.commit()
      
      



, , . user_id inst. test user_id. . . , . . .





@bot.message_handler(content_types=['text'])
def get_text_messages(message):
	if message.text.lower() == '':
		bot.send_message(message.from_user.id, '!      !')
    
    us_id = message.from_user.id
		us_name = message.from_user.first_name
		us_sname = message.from_user.last_name
		username = message.from_user.username
		
		db_table_val(user_id=us_id, user_name=us_name, user_surname=us_sname, username=username)
      
      



, id, Telegram, . , .





bot.polling(none_stop=True)
      
      



, . "".





これで、SQLiteStudio移動し、[データ]タブを選択して、何が起こったか確認できます





ご覧のとおり、データはすでにデータベースにあります。何らかの理由でそれらが存在しない場合は、青い[更新]ボタンをクリックしてデータベースを更新します





コード全体は次のとおりです。





import sqlite3
import telebot

bot = telebot.TeleBot("token")

conn = sqlite3.connect('db/database.db', check_same_thread=False)
cursor = conn.cursor()


def db_table_val(user_id: int, user_name: str, user_surname: str, username: str):
	cursor.execute('INSERT INTO test (user_id, user_name, user_surname, username) VALUES (?, ?, ?, ?)', (user_id, user_name, user_surname, username))
	conn.commit()


@bot.message_handler(commands=['start'])
def start_message(message):
	bot.send_message(message.chat.id, ' ')


@bot.message_handler(content_types=['text'])
def get_text_messages(message):
	if message.text.lower() == '':
		bot.send_message(message.chat.id, '!      !')
		
		us_id = message.from_user.id
		us_name = message.from_user.first_name
		us_sname = message.from_user.last_name
		username = message.from_user.username
		
		db_table_val(user_id=us_id, user_name=us_name, user_surname=us_sname, username=username)


bot.polling(none_stop=True)

      
      



結論

この記事では、sqlite3に少し慣れ、ユーザー情報を追加するための簡単なスクリプトを作成しました。もちろん、これだけでは不十分です。間もなく続編をリリースします。この続編では、ユーザーの削除とフィールドの編集について触れます。





読んでいただきありがとうございます。それが誰かを助けたことを願っています。みんなに頑張って、コードのバグを減らしてください!








All Articles