Πώς να δημιουργήσετε μια εφαρμογή εγγραφής με Python και βάση δεδομένων

Η Python έχει εξαιρετική υποστήριξη βάσης δεδομένων ενσωματωμένη στην τυπική βιβλιοθήκη της, ώστε να μπορείτε να δημιουργείτε και να αλληλεπιδράτε με μια βάση δεδομένων χωρίς να βασίζεστε σε εξωτερικά πλαίσια όπως το Django ORM.
Το SQLite είναι ελαφρύ και εύκολο να ενσωματωθεί με την Python. Ανακαλύψτε τις βασικές αρχές του προγραμματισμού βάσεων δεδομένων στην Python με μια απλή εφαρμογή εγγραφής χρήστη.
Πίνακας περιεχομένων
Πώς να δημιουργήσετε μια βάση δεδομένων στην Python
Για να δημιουργήσετε και να αλληλεπιδράσετε με μια βάση δεδομένων στην Python, χρειάζεστε δύο βασικά πράγματα: μια σύνδεση και έναν δρομέα.
Μια σύνδεση σάς βοηθά να συνδεθείτε σε μια υπάρχουσα βάση δεδομένων ή να δημιουργήσετε μια νέα. Δείτε πώς μπορείτε να δημιουργήσετε μια σύνδεση βάσης δεδομένων στην Python με το SQLite:
import sqlite3
conn = sqlite3.connect('path/to/database.db')
conn.close()
Η μέθοδος connect() ακολουθεί τη διαδρομή προς μια υπάρχουσα βάση δεδομένων. Εάν δεν υπάρχει βάση δεδομένων στην καθορισμένη διαδρομή, θα δημιουργήσει μία. Θα πρέπει να κλείσετε τη σύνδεση της βάσης δεδομένων σας όταν ολοκληρώσετε την αλληλεπίδραση με τη βάση δεδομένων.
Ένας δρομέας σάς βοηθά να αλληλεπιδράτε με τη συνδεδεμένη βάση δεδομένων. Θα χρησιμοποιήσετε έναν δρομέα για να εκτελέσετε ερωτήματα SQL μέσα στο πρόγραμμα Python σας. Δείτε πώς μπορείτε να δημιουργήσετε έναν δρομέα:
cursor = conn.cursor()
cursor.close()
Μπορείτε να δημιουργήσετε έναν δρομέα καλώντας τη μέθοδο cursor() σε ένα αντικείμενο ανοιχτής σύνδεσης.
Πώς να εκτελέσετε μια συναλλαγή βάσης δεδομένων στην Python
Χρησιμοποιώντας έναν δρομέα, μπορείτε να εκτελέσετε δηλώσεις SQL, ερωτήματα ή σενάρια, για να διαβάσετε ή να γράψετε δεδομένα ή να αλλάξετε τη δομή της βάσης δεδομένων.
Υπάρχουν τρεις κύριες μέθοδοι που μπορείτε να χρησιμοποιήσετε για να εκτελέσετε μια συναλλαγή βάσης δεδομένων.
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
name TEXT,
age INTEGER
)
""")
Αυτός ο κώδικας καλεί τη μέθοδο εκτέλεσης σε έναν δρομέα, περνώντας του μια συμβολοσειρά που περιέχει μια πρόταση SQL.
data = [
('Alice', 25),
('Bob', 30),
('Charlie', 22)
]cursor.executemany("""INSERT INTO users (name, age) VALUES (?, ?)""", data)
Ο παραπάνω κώδικας χρησιμοποιεί τη μέθοδο executemany για να εισάγει τιμές στη βάση δεδομένων πολλές φορές.
Σημειώστε το ? κράτη μέλη στη δήλωση SQL. Η μέθοδος executemany θα τις αντικαταστήσει με τις αντίστοιχες τιμές για κάθε αντικείμενο.
with open("path/to/script.sql") as file:
sql_script = file.read()cursor.executescript(sql_script)
Πώς να δημιουργήσετε μια εφαρμογή εγγραφής με Python και SQLite3
Η λογική πίσω από μια εφαρμογή εγγραφής περιλαμβάνει τη λήψη των πληροφοριών του χρήστη με την Python και την αποθήκευση τους σε μια βάση δεδομένων. Αυτά τα βήματα θα σας δείξουν πώς να δημιουργήσετε ένα απλό σύστημα εγγραφής με Python και SQLite3.
Βήμα 1: Συνδεθείτε σε μια υπάρχουσα βάση δεδομένων ή δημιουργήστε μια νέα
Ξεκινήστε δημιουργώντας μια βάση δεδομένων για την εφαρμογή σας ή συνδέοντας μια υπάρχουσα:
import sqlite3conn = 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()
Αυτός ο κώδικας θα δημιουργήσει έναν πίνακα που ονομάζεται χρήστες εάν δεν υπάρχει στη βάση δεδομένων σας. Δημιουργεί τέσσερις στήλες στον πίνακα για τη διατήρηση των πληροφοριών χρήστη. Το πεδίο email είναι μοναδικό για να εμποδίζει τους χρήστες να δημιουργούν πολλούς λογαριασμούς με το ίδιο email.
Η κλήση στο conn.commit είναι σημαντική για τη δέσμευση του ερωτήματος στη βάση δεδομένων. Χωρίς αυτό, δεν θα υπάρξουν αλλαγές στη βάση δεδομένων.
Εάν χρησιμοποιείτε τη μέθοδο executescript, μπορείτε να προσθέσετε τη λέξη-κλειδί COMMIT στο τέλος του αρχείου SQL, ώστε να μην χρειάζεται να καλέσετε το conn.commit.
Βήμα 3: Συλλέξτε δεδομένα χρήστη
Οι συναρτήσεις Python διευκολύνουν την επαναχρησιμοποίηση του κώδικα, επομένως είναι καλή ιδέα να δημιουργήσετε μια συνάρτηση για να χειριστείτε τη δυνατότητα εγγραφής. Αυτή η λειτουργία συλλέγει το όνομα, το επώνυμο, το email και τον κωδικό πρόσβασης του χρήστη.
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: Ελέγξτε την ορθότητα του κωδικού πρόσβασης
Τροποποιήστε τη συνάρτηση register_user για να βεβαιωθείτε ότι ο χρήστης εισάγει τον ίδιο κωδικό πρόσβασης δύο φορές. Εάν δεν το κάνουν, θα πρέπει να τους ζητήσετε να εισαγάγουν ξανά τον κωδικό πρόσβασης. Μπορείτε να το επιτύχετε με έναν βρόχο όπως αυτός:
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: Ελέγξτε τη μοναδικότητα του email
Η δήλωση SQL που δημιουργεί τον πίνακα χρηστών ορίζει το πεδίο email ως μοναδικό. Αυτό σημαίνει ότι η βάση δεδομένων θα εμφανίσει ένα σφάλμα εάν ένας χρήστης εγγραφεί με ένα email που ήδη υπάρχει. Για να ενεργήσετε σωστά, πρέπει να χειριστείτε την εξαίρεση Python:
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.")
Αυτός ο κώδικας χρησιμοποιεί το μπλοκ try-except για να χειριστεί το σφάλμα που θα προκύψει από διπλότυπα μηνύματα ηλεκτρονικού ταχυδρομείου. Εάν η βάση δεδομένων εμφανίσει ένα IntegrityError, ο βρόχος while θα συνεχιστεί, ζητώντας από τον χρήστη να εισαγάγει διαφορετική διεύθυνση email.
Για αυτό το δείγμα εφαρμογής, είναι ασφαλές να υποθέσουμε ότι ένα IntegrityError θα προκύψει μόνο ως αποτέλεσμα μιας διπλής διεύθυνσης email. Σε μια πραγματική εφαρμογή, πιθανότατα θα χρησιμοποιήσετε πιο προηγμένο χειρισμό σφαλμάτων για να αντιμετωπίσετε άλλα προβλήματα που ενδέχεται να προκύψουν.
Βήμα 6: Εισαγάγετε τα δεδομένα του χρήστη στη βάση δεδομένων
Τώρα που συλλέξατε και επαληθεύσατε τα δεδομένα του χρήστη, ήρθε η ώρα να τα προσθέσετε στη βάση δεδομένων. Μπορείτε να χρησιμοποιήσετε ένα ερώτημα SQL για να το κάνετε αυτό. Τροποποιήστε το μπλοκ try-except ως εξής:
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.")
Στο τροποποιημένο μπλοκ try-except, ο δρομέας εκτελεί μια λειτουργία εισαγωγής SQL. Τέλος, η μέθοδος conn.commit δεσμεύει τη λειτουργία SQL στη βάση δεδομένων.
Εάν ακολουθήσατε όλα τα παραπάνω βήματα, θα πρέπει να έχετε μια εφαρμογή που καταγράφει τους χρήστες και τους αποθηκεύει στη βάση δεδομένων. Μπορείτε να χρησιμοποιήσετε μια εφαρμογή όπως Πρόγραμμα περιήγησης DB για SQLite για να δείτε τα περιεχόμενα της βάσης δεδομένων σας:
Χρήση βάσεων δεδομένων αντί για τύπους συλλογών
Για απλές βάσεις δεδομένων, μπορεί να είναι πιο εύκολο να δημιουργήσετε τον δικό σας κώδικα. Ωστόσο, καθώς η εφαρμογή σας μεγαλώνει και η βάση δεδομένων σας γίνεται πιο περίπλοκη, σκεφτείτε να χρησιμοποιήσετε ένα εργαλείο όπως το Django ORM για να απλοποιήσετε την εργασία.
Για να συνεχίσετε να εξασκείτε τις δεξιότητές σας στη βάση δεδομένων χαμηλού επιπέδου, δοκιμάστε να εφαρμόσετε ένα σύστημα σύνδεσης για να συμπληρώσετε το πρόγραμμα εγγραφής.