Како направити апликацију за регистрацију са Питхон-ом и базом података

Питхон има одличну подршку за базе података уграђену у своју стандардну библиотеку, тако да можете креирати базу података и комуницирати са њом без ослањања на спољне оквире као што је Дјанго ОРМ.

СКЛите је лаган и лако се интегрише са Питхон-ом. Откријте основне принципе програмирања базе података у Питхон-у помоћу једноставне апликације за регистрацију корисника.

Како направити базу података у Питхон-у

Да бисте креирали базу података и комуницирали са њом у Питхон-у, потребне су вам две главне ствари: веза и курсор.

Веза вам помаже да се повежете са постојећом базом података или креирате нову. Ево како да креирате везу са базом података у Питхон-у помоћу СКЛите-а:

 import sqlite3


conn = sqlite3.connect('path/to/database.db')


conn.close()

Метода цоннецт() узима путању до постојеће базе података. Ако не постоји база података на наведеној путањи, креираће је. Требало би да затворите везу са базом података када завршите са интеракцијом са базом података.

Курсор вам помаже у интеракцији са повезаном базом података. Користићете курсор за извршавање СКЛ упита унутар вашег Питхон програма. Ево како да направите курсор:

 cursor = conn.cursor()


cursor.close()

Можете креирати курсор позивањем методе цурсор() на отвореном објекту везе.

Како извршити трансакцију базе података у Питхон-у

Користећи курсор, можете покренути СКЛ изјаве, упите или скрипте за читање или писање података или измену структуре базе података.

Постоје три главне методе које можете користити за извршење трансакције базе података.

  • Цурсор.екецуте. Овај метод ће покренути једну СКЛ наредбу. Ево како га користите:
     cursor.execute("""
        CREATE TABLE IF NOT EXISTS users (
            name TEXT,
            age INTEGER
        )
    """)

    Овај код позива методу екецуте на курсору, прослеђујући му стринг који садржи СКЛ наредбу.

  • Цурсор.екецутемани. Овај метод вам омогућава да покренете исту СКЛ наредбу више пута, са различитим параметрима сваки пут. Потребна су два аргумента: СКЛ изјава и итерабле. Добра употреба за то је да убаците неколико објеката у базу података одједном:
     data = [
        ('Alice', 25),
        ('Bob', 30),
        ('Charlie', 22)
    ]

    cursor.executemany("""INSERT INTO users (name, age) VALUES (?, ?)""", data)

    Горњи код користи методу екецутемани за уметање вредности у базу података више пута.

    Обратите пажњу на ? чувари места у СКЛ наредби. Метода екецутемани ће их заменити одговарајућим вредностима за сваки објекат.

  • Цурсор.екецутесцрипт. Као што име каже, овај метод ће извршити СКЛ скрипту за вас. Можете написати своје СКЛ изјаве у другу датотеку и покренути их помоћу методе екецутесцрипт:
     with open("path/to/script.sql") as file:
    sql_script = file.read()

    cursor.executescript(sql_script)

  • Како направити апликацију за регистрацију са Питхон-ом и СКЛите3

    Логика апликације за регистрацију укључује добијање информација о кориснику помоћу Питхон-а и њихово складиштење у бази података. Ови кораци ће вам показати како да креирате једноставан систем регистрације са Питхон-ом и СКЛите3.

    Корак 1: Повежите се са постојећом базом података или креирајте нову

    Започните креирањем базе података за своју апликацију или повезивањем са постојећом:

     import sqlite3

    conn = sqlite3.connect('database.db')

    cursor = conn.cursor()

    cursor.close()

    conn.close()

    Код изнад креира објекат везе и курсор за интеракцију са повезаном базом података.

    Корак 2: Креирајте табелу за кориснике

    Потребна вам је табела за чување података које ће корисници дати приликом регистрације. Ево како да га направите помоћу курсора:

     cursor.execute("""
        CREATE TABLE IF NOT EXISTS users (
            first_name TEXT,
            last_name TEXT,
            email TEXT UNIQUE,
            password TEXT
        )
    """)

    conn.commit()

    Овај код ће креирати табелу под називом корисници ако не постоји у вашој бази података. Он ствара четири колоне у табели за чување корисничких информација. Поље е-поште је јединствено да спречи кориснике да креирају више налога са истом е-поштом.

    Позив на цонн.цоммит је важан за урезивање упита у базу података. Без тога неће бити промена у бази података.

    Ако користите методу екецутесцрипт, можете додати кључну реч ЦОММИТ на крај ваше СКЛ датотеке, тако да не морате да позивате цонн.цоммит.

    Корак 3: Прикупите корисничке податке

    Питхон функције олакшавају поновно коришћење кода, тако да је добра идеја да направите функцију која ће управљати функцијом регистрације. Ова функција прикупља име, презиме, имејл и лозинку корисника.

     def register_user():
        first_name = input("Enter your first name: ")
        last_name = input("Enter your last name: ")
        email = input("Enter your email: ")
        password1 = input("Enter your password: ")
        password2 = input("Confirm your password: ")

    Корак 4: Проверите тачност лозинке

    Измените функцију регистер_усер да бисте осигурали да корисник двапут унесе исту лозинку. Ако не учине, требало би да их затражите да поново унесу лозинку. То можете постићи помоћу петље попут ове:

     def register_user():
        first_name = input("Enter your first name: ")
        last_name = input("Enter your last name: ")
        email = input("Enter your email: ")

        while True:
            password1 = input("Enter your password: ")
            password2 = input("Confirm your password: ")

            
            if password1 == password2:
                print("You have successfully registered!")
                break
            else:
                print("Your passwords must match")

    Са овом променом, корисник не може да се региструје осим ако се његове лозинке не поклапају.

    Корак 5: Проверите јединственост е-поште

    СКЛ изјава која креира табелу корисника дефинише поље е-поште као јединствено. То значи да ће база података вратити грешку ако се корисник пријави са е-поштом која већ постоји. Да бисте деловали на одговарајући начин, морате да обрадите Питхон изузетак:

     def register_user():
        first_name = input("Enter your first name: ")
        last_name = input("Enter your last name: ")

        while True:
            email = input("Enter your email: ")
            password1 = input("Enter your password: ")
            password2 = input("Confirm your password: ")

            
            if password1 == password2:
                try:
                    print("You have successfully created an account.")
                    break
                except sqlite3.IntegrityError:
                    print("Error: This email is already registered.")
            else:
                print("Your passwords must match.")

    Овај код користи блок три-екцепт за руковање грешком која ће се појавити од дупликата е-поште. Ако база података избаци грешку ИнтегритиЕррор, петља вхиле ће се наставити, тражећи од корисника да унесе другу адресу е-поште.

    За овај пример апликације, сигурно је претпоставити да ће се грешка ИнтегритиЕррор појавити само као резултат дупле адресе е-поште. У правој апликацији ћете вероватно користити напредније руковање грешкама да бисте решили друге проблеме који се могу појавити.

    Корак 6: Убаците податке корисника у базу података

    Сада када сте прикупили и верификовали податке корисника, време је да их додате у базу података. За то можете користити СКЛ упит. Измените свој блок три-екцепт овако:

     try:
        cursor.execute("""
            INSERT INTO users (first_name, last_name, email, password)
            VALUES (?, ?, ?, ?)
        """, (first_name, last_name, email, password2))

        conn.commit()
        print("You have successfully created an account.")
        break
    except sqlite3.IntegrityError:
        print("Error: This email is already registered.")

    У модификованом блоку три-екцепт, курсор извршава СКЛ операцију уметања. Коначно, метода цонн.цоммит урезује СКЛ операцију у базу података.

    Ако сте пратили све горе наведене кораке, требало би да имате апликацију која региструје кориснике и чува их у бази података. Можете користити апликацију попут ДБ претраживач за СКЛите да видите садржај ваше базе података:

    Коришћење база података уместо типова колекције

    За једноставне базе података, можда ће вам бити лакше да покренете сопствени код. Међутим, како ваша апликација расте и ваша база података постаје сложенија, размислите о коришћењу алата као што је Дјанго ОРМ да бисте поједноставили задатак.

    Да бисте наставили да вежбате своје вештине базе података ниског нивоа, покушајте да примените систем пријављивања који ће допунити програм регистрације.