خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

نحوه ایجاد یک برنامه ثبت نام با پایتون و پایگاه داده

این برنامه را بسازید تا با ایجاد جدول پایگاه داده و پر کردن آن با داده آشنا شوید.

پایتون دارای پشتیبانی عالی از پایگاه داده است که در کتابخانه استاندارد خود تعبیه شده است، بنابراین می توانید بدون تکیه بر چارچوب های خارجی مانند ORM جنگو، یک پایگاه داده ایجاد کرده و با آن تعامل داشته باشید.

SQLite سبک وزن است و به راحتی با پایتون ادغام می شود. با یک اپلیکیشن ساده ثبت نام کاربر، اصول اولیه برنامه نویسی پایگاه داده در پایتون را کشف کنید.

نحوه ایجاد پایگاه داده در پایتون

کد مورد استفاده برای این آموزش را می توانید در این مخزن GitHub پیدا کنید

برای ایجاد و تعامل با یک پایگاه داده در پایتون، به دو چیز اصلی نیاز دارید: یک اتصال و یک مکان نما.

یک اتصال به شما کمک می کند به یک پایگاه داده موجود متصل شوید یا یک پایگاه جدید ایجاد کنید. در اینجا نحوه ایجاد اتصال پایگاه داده در پایتون با SQLite آورده شده است:

import sqlite3

# Connect to a (new) database
conn = sqlite3.connect('path/to/database.db')

# Close the connection
conn.close()

متد connect() در مسیر یک پایگاه داده موجود قرار می گیرد. اگر در مسیر مشخص شده پایگاه داده وجود نداشته باشد، آن را ایجاد می کند. پس از پایان تعامل با پایگاه داده، باید اتصال پایگاه داده خود را ببندید.

مکان نما به شما کمک می کند تا با پایگاه داده متصل تعامل داشته باشید. شما از یک مکان نما برای اجرای پرس و جوهای SQL در برنامه پایتون خود استفاده خواهید کرد. در اینجا نحوه ایجاد مکان نما آورده شده است:

cursor = conn.cursor()

# Close the cursor
cursor.close()

می توانید با فراخوانی متد cursor() روی یک شیء اتصال باز یک مکان نما ایجاد کنید.

نحوه اجرای تراکنش پایگاه داده در پایتون

با استفاده از مکان نما، می توانید عبارات، پرس و جوها یا اسکریپت های SQL را برای خواندن یا نوشتن داده ها یا تغییر ساختار پایگاه داده اجرا کنید.

سه روش اصلی وجود دارد که می توانید برای اجرای یک تراکنش پایگاه داده استفاده کنید.

  1. Cursor.execute. این متد یک دستور SQL را اجرا خواهد کرد. نحوه استفاده از آن به این صورت است: cursor.execute (“””    CREATE TABLE IF NOT EXISTS users (                                                                                                          نام TEXT،                 )”””) این کد متد execute را روی مکان نما فراخوانی می کند و یک رشته حاوی یک عبارت SQ را ارسال می کند.
  2. Cursor.executemany. این روش به شما امکان می دهد یک عبارت SQL را بیش از یک بار با پارامترهای مختلف اجرا کنید. دو آرگومان نیاز دارد: عبارت SQL و یک تکرار. یک کاربرد خوب آن این است که چندین شی را به طور همزمان در پایگاه داده قرار دهید: data = [    (‘Alice’, 25),    (‘Bob’, 30),    (‘Charlie’, 22)]cursor.executemany(“”” INSERT INTO users (نام، سن) VALUES (?، ?)”””، داده) کد بالا از متد executemany برای درج چندین بار مقادیر در پایگاه داده استفاده می کند. توجه داشته باشید که ؟ متغیرهایی در بیانیه SQL. متد executemany این مقادیر را با مقادیر مربوط به هر شی جایگزین می کند.
  3. Cursor.executescript. همانطور که از نام آن پیداست، این روش یک اسکریپت SQL را برای شما اجرا می کند. می توانید عبارات SQL خود را در فایل دیگری بنویسید و آنها را با روش executescript اجرا کنید: با open(“path/to/script.sql”) به عنوان فایل: sql_script = file.read()cursor.executescript(sql_script)

cursor.execute("""
    CREATE TABLE IF NOT EXISTS users (
        name TEXT,
        age INTEGER
    )
""")

data = [
    ('Alice', 25),
    ('Bob', 30),
    ('Charlie', 22)
]

cursor.executemany("""INSERT INTO users (name, age) VALUES (?, ?)""", data)

توجه داشته باشید که ؟ متغیرهایی در بیانیه SQL. متد executemany این مقادیر را با مقادیر مربوط به هر شی جایگزین می کند.

with open("path/to/script.sql") as file:
sql_script = file.read()

cursor.executescript(sql_script)

نحوه ساخت اپلیکیشن ثبت با پایتون و SQLite3

منطق پشت برنامه ثبت نام شامل دریافت اطلاعات کاربر با پایتون و ذخیره آنها در یک پایگاه داده است. این مراحل به شما نشان می دهد که چگونه یک سیستم ثبت نام ساده با Python و SQLite3 ایجاد کنید.

مطلب مرتبط:   با ارتقا PyCharm 2022.3.2 پتانسیل پایتون خود را آزاد کنید!

مرحله 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: جمع آوری داده های کاربر

توابع پایتون استفاده مجدد از کد را آسان می کند، بنابراین ایده خوبی است که یک تابع برای مدیریت ویژگی ثبت ایجاد کنید. این تابع نام، نام خانوادگی، ایمیل و رمز عبور کاربر را جمع آوری می کند.

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: ")

        # Check password correctness
        if password1 == password2:
            print("You have successfully registered!")
            break
        else:
            print("Your passwords must match")

با این تغییر، کاربر نمی تواند ثبت نام کند مگر اینکه رمز عبور آنها مطابقت داشته باشد.

مطلب مرتبط:   نحوه ایجاد یک مؤلفه اعلان سفارشی در React

مرحله 5: منحصر به فرد بودن ایمیل را بررسی کنید

عبارت SQL که جدول کاربران را ایجاد می کند، فیلد ایمیل را منحصر به فرد تعریف می کند. این بدان معناست که اگر کاربر با ایمیلی که از قبل وجود دارد ثبت نام کند، پایگاه داده یک خطا برمی گرداند. برای عملکرد مناسب، باید استثنای پایتون را مدیریت کنید:

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: ")

        # 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 ادامه می‌یابد و از کاربر می‌خواهد آدرس ایمیل دیگری را وارد کند.

برای این برنامه نمونه، می‌توان فرض کرد که 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 Browser برای SQLite برای مشاهده محتویات پایگاه داده خود استفاده کنید:

مرورگر DB برای برنامه SQLite که یک رکورد کاربر را در جدول پایگاه داده نشان می دهد.

استفاده از پایگاه های داده به جای انواع مجموعه

برای پایگاه داده های ساده، ممکن است برای شما راحت تر باشد که کد خود را رول کنید. با این حال، همانطور که برنامه شما رشد می کند و پایگاه داده شما پیچیده تر می شود، از ابزاری مانند Django ORM استفاده کنید تا کار را ساده کنید.

برای ادامه تمرین مهارت های پایگاه داده سطح پایین خود، سعی کنید یک سیستم ورود به سیستم را برای تکمیل برنامه ثبت نام پیاده سازی کنید.