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