PracticU

פייטון SQLite

בלי כתוביותעם כתוביות
PracticU › קורס פייתון - Python › פייטון SQLite
מילון מושגים:
SQLite - מסד נתונים יחסי קל משקל ששמור בקובץ בודד, נפוץ ביישומים מקומיים ובאפליקציות מובייל.
אחסון - שמירת נתונים באופן קבוע על התקנים כמו דיסקים או שירותי ענן, כך שיישמרו גם לאחר כיבוי.
MySQL - מערכת ניהול מסדי נתונים יחסיים בקוד פתוח, נפוצה מאוד באתרים וביישומי אינטרנט.
בנאי - מתודה מיוחדת שמופעלת אוטומטית בעת יצירת אובייקט ממחלקה, ומאתחלת את ערכיו ההתחלתיים.
מסד נתונים - אוסף מאורגן של נתונים המאוחסן כך שאפשר לשמור, לחפש, לעדכן ולשלוף אותו ביעילות, לרוב באמצעות שפת שאילתות.
קומיט - פעולה ב-Git ששומרת תמונת מצב של השינויים במאגר יחד עם תיאור. גם אישור סופי של שינויים במסד נתונים.
שאילתה - בקשה למסד נתונים לשלוף, להוסיף, לעדכן או למחוק נתונים, לרוב בשפת SQL.
חבילה - אוסף ארוז של קוד, ספריות או קבצים המופץ כיחידה אחת ומותקן בעזרת מנהל חבילות.

פייטון SQLite
השיעור מדגים שימוש במסד הנתונים SQLite דרך פייתון: קריאת קובץ טקסט, שמירת התוכן בטבלה, ושליפה והדפסה של המידע. SQLite הוא מסד רלציוני חינמי וקטן, שתוכנות רבות משתמשות בו לאחסון מידע מקומי, כמו אפליקציות אנדרואיד ותוכנות כמו סקייפ. הוא לא נועד להחליף את MySQL בשרתי אינטרנט.
קריאת הקובץ
1. הקובץ לדוגמה: נכתב קובץ data.txt עם שם פרטי, שם משפחה וגיל בכל שורה, מופרדים בפסיקים.
2. קריאה עם with open: הבלוק פותח את הקובץ, וכשיוצאים ממנו פייתון סוגרת אותו אוטומטית, בלי צורך ב-close.
3. פירוק השורה: line.split(",") מחזיר רשימה, והכוכבית (*) פורשת אותה לפרמטרים של הקונסטרקטור של Person. כך אפשר לכתוב את הפירוק בשורה אחת במקום לגשת לכל איבר בנפרד.
יצירת טבלה והכנסת נתונים
4. חיבור: sqlite3.connect פותח קובץ מסד נתונים בשם data.sql ומחזיר אובייקט חיבור. מהחיבור מקבלים cursor, שמריץ את פקודות ה-SQL.
5. מחיקה ויצירה: הפקודה DROP TABLE IF EXISTS מוחקת את הטבלה אם היא קיימת, כדי שהסקריפט יוכל לרוץ שוב בלי שגיאה. אחריה נוצרת טבלה בשם people עם השדות name ו-last name מסוג טקסט, ו-age מסוג מספר שלם.
6. הכנסה עם סימני שאלה: כל סימן שאלה בפקודת INSERT הוא פלייסהולדר, והערכים נשלחים בפרמטר נפרד, בסדר שבו הם מופיעים.
7. שמירה עם commit: השינויים נכתבים קודם לזיכרון של מנוע SQLite, ורק הקריאה ל-commit כותבת אותם לקובץ.
שליפה וסגירה
8. שאילתה: SELECT * FROM people מחזירה את כל השורות, ו-fetchall מחזיר אותן כרשימה של טאפלים.
9. סגירה: בשיעור מציינים שכדאי לסגור את ה-cursor ואת המשאבים, גם אם הסקריפט מסתיים בכל מקרה.
10. צפייה חיצונית: דפדפן SQLite מאפשר לראות את הטבלה ואת הנתונים גם מחוץ לפייתון.
החלפת מסד הנתונים
השיעור מראה שאם הפקודות ב-SQL תקינות, אפשר להחליף את מסד הנתונים בעזרת מודול אחר. לדוגמה, חבילה מסוג PyMySQL שנמצאה בחיפוש pip מאפשרת לעבוד מול MySQL. רק הגדרת החיבור והמיקום של המסד משתנים, והלוגיקה העיקרית נשארת פשוטה.
השיעור הבא בקורס: כתיבת SCRIPT הבודק לינקים באתר

פרקי ההרצאה: פייטון SQLite

  1. 00:00

    מבוא: מה זה SQLite ולמה משתמשים בו

  2. 01:58

    התקנת דפדפן קטן לבדיקת קבצי SQLite

  3. 02:41

    הכנת קובץ נתונים: שם, משפחה וגיל

  4. 05:33

    פתיחת קובץ בעזרת with

  5. 09:38

    קריאת הקובץ שורה אחרי שורה

  6. 11:48

    חיבור למסד הנתונים data.sql

  7. 12:26

    יצירת cursor והאפשרויות שלו

  8. 13:30

    מחיקת טבלה קיימת בעזרת Execute

תמלול ההרצאה: פייטון SQLite

הטקסט המלא של הדקות הראשונות בהרצאה «פייטון SQLite» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    שלום לכולם, בשיעור הזה אנחנו נדבר על SQLite שזה דאטאבייס אנחנו נכתוב סקריפט שמפרסר קובץ, מכניס את התוכן שלו לתוך דאטאבייס מסוג SQLite ולאחר מכן קורא את המידע משם ומדפיס אותו על המסך.

  2. 00:21

    דבר ראשון נסביר מה זה SQLite אז SQLite זה דאטאבייס רלציוני, כלומר הוא מבוסס טבלאות כמו Microsoft SQL או MySQL מצד שני, הוא חינמי, והוא הרבה יותר קטן.

  3. 00:41

    המטרה של SQLite זה לא להיות דאטאבייס של אתרי אינטרנט שאתם ניגשים אליהם לקבל מידע, אלא זהו דאטאבייס שאתם משתמשים בו הרבה, משתמשים בו בתוכנות קטנות לאחסן מידע.

  4. 00:55

    למשל, כל מתכנתי האנדרואידים או כל מי שרוצה להיכנס לתחום תכנות האנדרואידים, אז הרבה אפליקציות שנמצאות בפלאפון שלנו, כל אחת מהן, אם המתכנת בחר בכך, שומרת את המידע בתוך דאטאבייס SQLite משלו.

  5. 01:13

    ותוכנה אפילו יכולה להשתמש בכמה דאטאבייסים של SQLite. יותר מזה, תוכנות אחרות, כמו סקייפ למשל, גם שומרות את המידע בתוך SQLite.

  6. 01:28

    קובץ שנמצא לוקאלית על המחשב, הקובץ הזה הוא נגיש לתוכנה, וזה לא כמו סרוויס שתוכנה אחרת ניגשת אליו, אלא הסקייפ עצמו שומר את כל ההיסטוריה של הצ'אטים ומי דיבר עם מי, באיזה שעה ולפני כמה זמן ומה הוא דיבר, הכל נשמר בתוך קובץ מסוג sqlite.

  7. 01:49

    הביצועים של sqlite הם יחסית טובים, הוא מאוד טוב, הוא מאוד זריז, מבחינת מקום הזיכרון הוא תופס הרבה פחות. כמובן שמבחינת הביצועים שלו הוא לא מיועד להיות תחליף ל-MySQL, אלא השימוש שלו הוא אחר לתוכנות שרוצות לשמור מידע על התוכנה עצמה אז לפני שנתחיל את התרגיל

  8. 02:12

    אנחנו נוריד איזשהו בראוזר קטן של sqlite שנותן לנו אופציה להסתכל בתוך הקבצים אז פשוט חיפשתי בגוגל sqlite browser נכנסתי ללינק הראשון ואני מוריד את הקובץ ונתקין אותו צ'יק צ'אק תוך כדי אני אכין קובץ טקסט שממנו אני ארצה שאותו אני ארצה לפרסר אז הדאטאבייס שלי יכיל שלוש עמודות, שם של בן אדם, שם משפחה של בן אדם וגיל של בן אדם.

  9. 02:50

    אז בואו נכין את הקובץ. אז מוזס כהן, ארבעים, ג'ון, מת, שתים עשרה, תן, ניק, שלוש, ועוד אחד, דין, דין, דין עדין, בן שתים עשרה. ואת הקובץ הזה אני אשמור באותה תיקייה שבה אני שומר את כל הקבצים

  10. 03:39

    של הפייתון בתוך הוורקספייס של אקליפס, נקרא לזה data.text ותכף בואו בינתיים נתקין את התוכנה שסיימנו להוריד, זה בינתיים נשים בצד, עם זה נוכל לפתוח את הקובץ אחרי שיצרנו אותו ולראות שבאמת יצרנו את הדברים.

  11. 04:22

    פייתון מכילה תמיכה בילט אין ב-sqlite בעזרת מודול שנקרא sqlite 3. אז בואו נתחיל. דבר ראשון, אני אעשה פה רגע רענון, והנה הקובץ דאטה שלנו, אפשר לראות אותו פה. בואו נתחיל בלקרוא את הדאטה לתוך איזשהו ליסט.

  12. 04:43

    אז נעשה את זה קצת דארקלאס פרסון ובואו נפתח את הכובד. אז איך פותחים כובד סקייה בפייתון?

  13. 05:37

    כותבים with open, השם של הכובד שלנו בגלל שהוא בתיקייה הנוכחית פשוט אפשר לכתוב דאטה ודאט טקסט והוא ידע שזה פה אז F ואז בעצם F זה הכובד שלי.

  14. 05:56

    כלומר, אני פותח את הקובץ הזה ואני מתייחס אליו בתוך הוויסט בתור המשתנה f. עכשיו, בעזרת השימוש בוויסט בעצם אני לא צריך לעשות קלוז לקובץ.

  15. 06:08

    ברגע שאני יוצא חזרה מהאידנטציה החוזרת החוצה, פייתון אוטומטית סוגר לי את הקובץ. הייתי יכול פשוט לעשות, וזה היה שווה ערך, f שווה לopen של, וזה היה אותו דבר בדיוק, אבל ככה אני צריך לעשות קלוז, ואם הוויסט הוא חוסך לי את הקלוז, זה משהו שקיים גם ב-C-sharp למשל וקיים גם בפייתון

  16. 06:43

    ועכשיו עושים for key in f ונעשה people.append חבית של p.spi נראה אם זה באמת עובד בוא נריץ ונראה מה קורה קיבלנו שגיאה זה טוב, זה באמת טעות שלי כיצור אני רוצה להוסיף person חדש אותה הזדמנות, בוא נכתוב פה איזשהו sdr קטן זה יכול לעזור לנו נחזיר את הניים וזהו כרגע זה מספיק לי בוא נריץ אוקיי

  17. 07:46

    בטוח שהוא ייתן לי את הניים שלו בוא ננסה להדפיס x נדפיס עכשיו for x in נעשה את זה בתור list comprehension x for x in רואים עכשיו זה הדפיס לי את זה יפה נדע שזה פרסון נוסיף פה לולת for רק נראה שבאמת פיצרנו את הדברים.

  18. 08:47

    for x in pople x ונריץ את זה. אוקיי, מוזס, ג'ון, איתן ודין. אפשר לעשות פעם את זה לקטע. אוקיי, אז את החלק הראשון סיימנו בהצלחה ונראה שעשינו את זה טוב.

  19. 09:11

    עכשיו בואו נלך לחלק השני. נתחיל בליצור sqlite. אבל לפני שנעבור לsqlite, בואו רגע נעבור מה עשינו, כי יכול להיות שעשינו פה כמה דברים קצת טריקים.

  20. 09:25

    אוקיי, אז דבר ראשון יצרנו ליסט שמכיל, ליסט רק, שיכיל בתוכו את כל ה-people, עשינו with open as f, וזה בעצם מה שמחזיק לי את ה...

  21. 09:37

    זה הקובץ, כלומר זה מה שאני עושה לו read ו-write וכו'. עכשיו, ברגע שאני אומר לפייתון for p, בואו נשנה לזה את השם, for line in f, פייתון אוטומטית, בגלל שהיא מבינה שאני קורא פה קובץ טקסט, אז היא אוטומטית מביאה לי אותו שורה-שורה.

  22. 10:02

    עכשיו, כל שורה פה בעצם מכילה לי מוזס את השם של... את השורה מהקובץ הזה: מוזס כהן 40. אז מה אני אומר? תיקח את השורה, תעשה לי ספליט לפי פסיקים, זה מחזיר לי ליסט.

  23. 10:23

    את הליסט הזה תעשה לו כוכבית, שזה אומר Unpacking, לתוך הקונסטרקטור של פרסון. כלומר, הקונסטרקטור של פרסון מצפה לקבל שלושה פרמטרים:

  24. 10:35

    Name, last name ו-h. בכל שורה יש לנו גם שלושה דברים: name, last name ו-h. הסימן של הכוכבית פה בעצם אומר, תיקח את ה-list הזה של align.speed ותפרוס אותו בתוך הפונקציה init של person.

  25. 10:56

    כל הדבר הזה, תכניס אותו לתוך ה-list. בעצם, אם הייתי רוצה להימנע, מה הדבר הזה חוסך לי? אם הייתי רוצה לא להשתמש בטריק של הכוכבית, מה שהייתי צריך לעשות זה משהו בסגנון הזה L שווה LINE נקודה ספליט ואז L במקום האפס L במקום האחד L במקום השתיים זה היה יוצר לי בדיוק את אותו אפקט אני אשאיר את זה פה בהערה

  26. 11:29

    ופשוט במקום לעשות משהו כזה ארוך אז אני פשוט יכול לעשות את זה בשורה אחת זה יותר יפה אולי קצת פחות מובן אבל עם הזמן מתרגלים אוקיי ועכשיו אחרי שהסברנו את הקוד הזה בוא נמשיך חל על העניין של הדאטאבייט, אוקיי אז בוא נתחיל דבר ראשון קונקשן או קון האובייקט שנרצה לעבוד

  27. 12:01

    איתו sql נקרא לזה שווה ל sqlite 3 נקודה קונקט ופה אני צריך לתת לו את השם של הדאטאבייס אז השם של הדאטאבייס שאני רוצה בעצם השם של הקובץ שיכיל בתוכו את המידע אז בוא נקרא לו data.sql כי בניגוד לדאטה נקודה טקסט זה זה יהיה דאטה שיכיל משהו בפורמט של SQL. עכשיו

  28. 12:32

    אני בעצם רוצה לקבל איזשהו מצביע ל-SQL הזה, אחרי שהתחברתי אליו, אז אני עושה קורס שווה ל-sql.cursor. אכניס רגע את קורס, ונראה שאנחנו לא עשינו פה איזושהי טעות.

  29. 12:59

    אוקיי, קיבלנו פה איזשהו קורסר, ואם נעשה רגע דיר לדבר הזה, אז גם נוכל לראות מה האופציות שלנו פה. אוקיי, יש לנו פה array size, Close, Connection, Description, Execute, זאת נראה לי תקודה חשובה.

  30. 13:19

    Fetch All, Fetch Many, Fetch One. בעצם כל מי שעבד עם דאטאבייסים נראה לי כבר יתחיל להבין פה מה יש לנו ביד ואיך עובדים איתו. אז בואו נתחיל את הדוגמה בלמחוק את הטבלה שעוד לא יצרנו כדי שנוכל להריץ הסקריפט הזה כמה פעמים ולא יהיה לנו בעיה.

  31. 13:39

    אז קורס נקודה Execute, ואז אני עושה, זאת פקודת SQL לכל דבר, שהיא תורמת גם ל-MySQL, אני לא יודע אם יש איזה שהם ניואנסים קטנים בפקודות של ה-SQL, אבל ברמה הקונספטואלית הפקודות האלה אמורות להיות זהות בכל המסדי הנתונים של ה-SQL.

  32. 14:07

    אז drop table if this, ונקרא לזה, הטבלה שלנו people, בוא נראה. אוקיי, אין שגיאה, זה טוב.

  33. 14:33

    עכשיו אנחנו רוצים ליצור את הטבלה שלנו. אז נעשה עוד פעם, course.execute, ועוד פעם נעשה create table, people ומה יש לנו בטבלה הזאת? יש לנו org

לקורס המלא: קורס פייתון אונליין למתחילים

ההרצאה הקודמת: פייטון design pattern factory

ההרצאה הבאה: כתיבת SCRIPT הבודק לינקים באתר

הרצאות קשורות מקורסים אחרים

  • חיבור למסד נתונים SQLite - חלק 1

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס PHP - פרויקט מעשי