12 ימים של DigitalOcean (יום 2) – חיבור למסד הנתונים PostgreSQL שלך עם פייתון

ברוכים הבאים ליום 2 של 12 ימים של DigitalOcean! אתמול, התחלנו לבנות את שירות תזכורת יומולדת—אפליקציה פשוטה ששולחת התראות SMS על ימי הולדת קרובים. 🎉 הקמנו מסד נתונים PostgreSQL על DigitalOcean כדי לאחסן פרטי קשר.

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

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

✨ למה הצעד הזה?

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

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

🚀 מה תלמד

הנה התוכנית להיום:

  1. שמור אישורים רגישים בקובץ .env.
  2. השתמש בpython-dotenv כדי לטעון את האישורים האלה לתוך הסקריפט שלך.
  3. כתוב סקריפט פייתון כדי להתחבר בצורה בטוחה למסד הנתונים PostgreSQL שלך באמצעות pg8000
  4. קבל והצג נתונים מטבלת contacts

בסוף זה, תהיה לך בסיס מוצק לבניית הלוגיקה של האפליקציה.

🛠 מה תצטרך

לפני שנצלול פנימה, הנה מה שתצטרך:

  • המסד נתונים שהקמנו ביום 1. TODO: קישור לכתובת יום 1
  • פייתון מותקן במכונה המקומית שלך (אנו ממליצים על פייתון 3.8+).

🧑‍🍳 מתכון ליום 2: חיבור ל-PostgreSQL עם פייתון

שלב 1: התקנת הספריות הנדרשות 📦

כדי לחבר את פייתון ל-PostgreSQL ולשמור על האישורים שלנו מאובטחים, נשתמש בשתי ספריות מפתח:

  • pg8000: ספריית פייתון טהורה המאפשרת לך להתחבר ולתקשר עם מסדי נתונים של PostgreSQL.
  • python-dotenv: כלי לטעינת אישורים רגישים (כמו שמות משתמש וסיסמאות למסד נתונים) מקובץ .env, כך שלא תצטרך לקודד אותם בקשיחה בסקריפט שלך.

בוא נתקין אותן עכשיו. הרץ את הפקודה הזו במסוף שלך:

pip install pg8000 python-dotenv

טיפ מקצועי: אם אתה משתמש בסביבה וירטואלית (תמיד רעיון טוב!), ודא שאתה מפעיל אותה לפני הרצת הפקודה לעיל כדי לשמור על התלות שלך מאורגנת.

צעיף 2: צור קובץ .env 📂

בתיקיית הפרויקט שלך, צור קובץ בשם .env. כאן נשמור את אישורי הגישה למסד הנתונים שלנו. הוסף את הבא:

DB_HOST=<your-hostname>
DB_NAME=<your-database-name>
DB_USER=<your-username>
DB_PASSWORD=<your-password>

החלף את הערכים הממלאים עם האישורים מיום 1.

טיפ מקצועי: הוסף .env לקובץ .gitignore שלך כדי להבטיח שאישורי הגישה שלך לא יידחפו בטעות למערכת בקרת גרסאות.

צעיף 3: צור סקריפט פייתון 🐍

צור קובץ חדש בשם connect_to_db.py, והכן את הסקריפט כדי לטעון את האישורים מ.env באמצעות python-dotenv, ולהתחבר למסד הנתונים שלנו.

הנה הקוד להתחלה:

# connect_to_db.py

import pg8000
from dotenv import load_dotenv
import os

# טען משתני סביבה מקובץ .env
load_dotenv()

# פרטי חיבור למסד הנתונים
DB_HOST = os.getenv("DB_HOST")
DB_NAME = os.getenv("DB_NAME")
DB_USER = os.getenv("DB_USER")
DB_PASSWORD = os.getenv("DB_PASSWORD")
DB_PORT = int(os.getenv("DB_PORT"))

try:
    # התחבר למסד הנתונים
    connection = pg8000.connect(
        host=DB_HOST,
        database=DB_NAME,
        user=DB_USER,
        password=DB_PASSWORD,
        port=DB_PORT
    )
    print("Connection successful!")
except Exception as e:
    print("An error occurred while connecting to the database:", e)
finally:
    if connection:
        connection.close()

סקריפט זה עושה מספר דברים חשובים:

  • טוען את האישורים בצורה מאובטחת מקובץ .env.
  • מ establishes a connection to your database using pg8000.connect().
  • מדפיס הודעת הצלחה או שגיאה בהתאם לתוצאה.

שלב 4: בדוק את החיבור ✅

עכשיו, בואו נוודא שהכל עובד. הרץ את הסקריפט שלך:

python connect_to_db.py

אם הכל מוגדר נכון, אתה אמור לראות:

Connection successful!

אם יש שגיאה:

  • בדוק שוב את הערכים בקובץ .env שלך.
  • ודא שהכתובת IP שלך נוספה למקורות המהימנים של מסד הנתונים (ראה שלב 6 מיום 1).

שלב 5: קבלת נתונים ממסד הנתונים 🔍

עכשיו, בואו נרחיב את הסקריפט כדי לקבל נתונים. עדכן את הסקריפט connect_to_db.py שלך לכלול את הדברים הבאים:

# connect_to_db.py

import pg8000
from dotenv import load_dotenv
import os

# טען משתני סביבה מקובץ .env
load_dotenv()

# פרטי חיבור למסד נתונים
DB_HOST = os.getenv("DB_HOST")
DB_NAME = os.getenv("DB_NAME")
DB_USER = os.getenv("DB_USER")
DB_PASSWORD = os.getenv("DB_PASSWORD")
DB_PORT = int(os.getenv("DB_PORT"))

try:
    # התחבר למסד הנתונים
    connection = pg8000.connect(
        host=DB_HOST,
        database=DB_NAME,
        user=DB_USER,
        password=DB_PASSWORD,
        port=DB_PORT
    )
    print("Connection successful!")

    # שאל את מסד הנתונים
    cursor = connection.cursor()
    query = "SELECT * FROM contacts;"
    cursor.execute(query)
    records = cursor.fetchall()

    # הדפס את התוצאות
    print("Contacts:")
    for record in records:
        print(record)

    # סגור את הקורסור והחיבור
    cursor.close()
    connection.close()

except Exception as e:
    print("An error occurred:", e)

הסקריפט הזה עכשיו:

  • מבצע שאילתה כדי להביא את כל הרשומות מטבלת הקשרים.
  • מדפיס כל רשומה לקונסולה.

הערה: אם הטבלה ריקה, אין דאגות! אתה עדיין יכול לבדוק שהסקריפט פועל ללא שגיאות. לצורך בדיקה, תוכל להוסיף במהירות קשר לדוגמה על ידי פתיחת מסד הנתונים שלך באמצעות psql (או הכלי המועדף עליך) והרצת הפקודה SQL הזו:

INSERT INTO contacts (first_name, last_name, birthday) 
VALUES ('Test', 'User', '1990-01-01');

אם אתה צריך רענון על איך להשתמש ב-psql או רוצה לחקור כלים גרפיים כמו pgAdmin או TablePlus, עיין בהוראות ביום 1.

🎁 סיכום

הנה מה שהשגת היום:

✅ התקנת את הספריות הנדרשות של פייתון.
✅ התחברת למסד נתונים PostgreSQL של DigitalOcean שלך בעזרת פייתון.
✅ שלפת נתונים מטבלת contacts עם שאילתה פשוטה.

הבא בתור: מחר נתחיל להוסיף לוגיקה כדי למצוא ימי הולדת קרובים ולשלוח התראות SMS באמצעות Twilio. כאן האפליקציה מתחילה להתעורר לחיים—הישאר מעודכן! 🚀

Source:
https://www.digitalocean.com/community/tutorials/connecting-to-postgresql-database-with-python