בנו את האפליקציה הזו כדי ללמוד על יצירת טבלת מסד נתונים ואיכלוסה בנתונים.
לפייתון יש תמיכה מצוינת במסד נתונים מובנית בספרייה הסטנדרטית שלה, כך שתוכל ליצור ולקיים אינטראקציה עם מסד נתונים מבלי להסתמך על מסגרות חיצוניות כמו 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, שאילתות או סקריפטים, כדי לקרוא או לכתוב נתונים, או לשנות את מבנה מסד הנתונים.
ישנן שלוש שיטות עיקריות בהן תוכל להשתמש כדי לבצע עסקת מסד נתונים.
-
Cursor.execute. שיטה זו תפעיל משפט SQL יחיד. הנה איך אתה משתמש בו:
קוד זה קורא ל- לבצע שיטה על סמן, העברת לה מחרוזת המכילה משפט SQL.cursor.execute(
CREATE TABLE IF NOT EXISTS users (
name TEXT,
age INTEGER
)
) -
Cursor.executemany. שיטה זו מאפשרת לך להריץ את אותה משפט SQL יותר מפעם אחת, עם פרמטרים שונים בכל פעם. זה דורש שני ארגומנטים: משפט SQL ו-Ierable. שימוש טוב עבור זה הוא להכניס מספר אובייקטים למסד הנתונים בבת אחת:
הקוד לעיל משתמש ב- הוצאה להורג שיטה להכנסת ערכים למסד הנתונים מספר פעמים.data = [
('Alice', 25),
('Bob', 30),
('Charlie', 22)
]cursor.executemany(INSERT INTO users (name, age) VALUES (?, ?), data)
שימו לב ל ? מצייני מיקום בהצהרת SQL. שיטת הביצוע תחליף את אלה בערכים המתאימים לכל אובייקט.
-
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()
קוד זה יצור טבלה בשם משתמשים אם זה לא קיים במסד הנתונים שלך. זה יוצר ארבע עמודות בטבלה כדי להחזיק מידע משתמש. שדה האימייל הוא ייחודי כדי למנוע ממשתמשים ליצור מספר חשבונות עם אותו דוא"ל.
הקריאה ל conn.commit חשוב לבצע את השאילתה במסד הנתונים. בלעדיו לא יהיו שינויים במסד הנתונים.
אם אתה משתמש בשיטת executescript, אתה יכול להוסיף את מילת המפתח COMMIT בסוף קובץ ה-SQL שלך, כך שלא תצטרך לקרוא ל-conn.commit.
שלב 3: איסוף נתוני משתמש
פונקציות Python מקלות על שימוש חוזר בקוד, אז זה רעיון טוב ליצור פונקציה לטיפול בתכונת הרישום. פונקציה זו אוספת את השם הפרטי, שם המשפחה, האימייל והסיסמה של המשתמש.
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: בדוק את ייחודיות הדוא"ל
הצהרת SQL שיוצרת את טבלת המשתמשים מגדירה את שדה האימייל כייחודי. המשמעות היא שמסד הנתונים יחזיר שגיאה אם משתמש יירשם עם דוא"ל שכבר קיים. כדי לפעול כראוי, אתה צריך לטפל בחריג 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 כדי לטפל בשגיאה שתתרחש מהודעות דוא"ל כפולות. אם מסד הנתונים זורק שגיאת Integrity, לולאת ה-while תימשך, ותבקש מהמשתמש להזין כתובת דוא"ל אחרת.
עבור אפליקציה לדוגמה זו, בטוח להניח ששגיאת IntegrityError תתרחש רק כתוצאה מכתובת דוא"ל כפולה. באפליקציה אמיתית, סביר להניח שתשתמש בטיפול בשגיאות מתקדם יותר כדי לטפל בבעיות אחרות שעלולות להתרחש.
שלב 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 כדי לפשט את המשימה.
כדי להמשיך לתרגל את כישורי מסד הנתונים ברמה הנמוכה שלך, נסה ליישם מערכת התחברות כדי להשלים את תוכנית הרישום.