Направите ову апликацију да бисте научили о креирању табеле базе података и њеном попуњавању подацима.
Питхон има одличну подршку за базе података уграђену у своју стандардну библиотеку, тако да можете креирати базу података и комуницирати са њом без ослањања на спољне оквире као што је Дјанго ОРМ.
СКЛите је лаган и лако се интегрише са Питхон-ом. Откријте основне принципе програмирања базе података у Питхон-у помоћу једноставне апликације за регистрацију корисника.
Како направити базу података у Питхон-у
Код који се користи за овај водич можете пронаћи у овоме ГитХуб спремиште
Да бисте креирали и комуницирали са базом података у Питхон-у, потребне су вам две главне ствари: а везу и а курсор.
Веза вам помаже да се повежете са постојећом базом података или креирате нову. Ево како да креирате везу са базом података у Питхон-у помоћу СКЛите-а:
import sqlite3
# Connect to a (new) database
conn = sqlite3.connect('path/to/database.db')
# Close the connection
conn.close()
Тхе повезати() метода узима путању до постојеће базе података. Ако не постоји база података на наведеној путањи, креираће је. Требало би да затворите везу са базом података када завршите са интеракцијом са базом података.
Курсор вам помаже у интеракцији са повезаном базом података. Користићете курсор за извршавање СКЛ упита унутар вашег Питхон програма. Ево како да направите курсор:
cursor = conn.cursor()
# Close the 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()
# your app's code goes here
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: Прикупите корисничке податке
Питхон функције олакшавају поновно коришћење кода, па је добра идеја да креирате функцију која ће управљати функцијом регистрације. Ова функција прикупља име, презиме, имејл и лозинку корисника.
defregister_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: Проверите тачност лозинке
Модифи тхе регистер_усер функција која осигурава да корисник двапут унесе исту лозинку. Ако не учине, требало би да их затражите да поново унесу лозинку. То можете постићи помоћу петље попут ове:
defregister_user():
first_name = input("Enter your first name: ")
last_name = input("Enter your last name: ")
email = input("Enter your email: ")whileTrue:
password1 = input("Enter your password: ")
password2 = input("Confirm your password: ")
# Check password correctness
if password1 == password2:
print("You have successfully registered!")
break
else:
print("Your passwords must match")
Са овом променом, корисник не може да се региструје осим ако се његове лозинке не поклапају.
Корак 5: Проверите јединственост е-поште
СКЛ изјава која креира табелу корисника дефинише поље е-поште као јединствено. То значи да ће база података вратити грешку ако се корисник пријави са е-поштом која већ постоји. Да бисте се понашали на одговарајући начин, морате руковати Питхон изузетком:
defregister_user():
first_name = input("Enter your first name: ")
last_name = input("Enter your last name: ")whileTrue:
email = input("Enter your email: ")
password1 = input("Enter your password: ")
password2 = input("Confirm your password: ")
# Check password correctness
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.")
У модификованом блоку три-екцепт, курсор извршава СКЛ операцију уметања. Коначно, цонн.цоммит метод урезује СКЛ операцију у базу података.
Ако сте пратили све горе наведене кораке, требало би да имате апликацију која региструје кориснике и чува их у бази података. Можете користити апликацију попут ДБ претраживач за СКЛите да видите садржај ваше базе података:
Коришћење база података уместо типова колекције
За једноставне базе података, можда ће вам бити лакше да покренете сопствени код. Међутим, како ваша апликација расте и ваша база података постаје сложенија, размислите о коришћењу алата као што је Дјанго ОРМ да бисте поједноставили задатак.
Да бисте наставили да вежбате своје вештине базе података ниског нивоа, покушајте да примените систем пријављивања који ће допунити програм регистрације.