اذهب إلى المحتوى

السؤال

نشر

لدي مشكلة وهي انه في هذا الكود اريد اضافة طالب الى جدول الطلاب تخرج لي رسالة انه اكتمل تسجيل الطالب لكن حينما اذهب الى قاعدة البيانات لا اشاهد البيانات مسجلة مع انني اقوم بتحديث القاعدة ولا تخرج ما هو السبب 

import sqlite3

 

conn = sqlite3.connect('school.db')

 

cursor = conn.cursor()

 

cursor.execute("""

CREATE TABLE  IF NOT EXISTS students(

               

            student_id INTEGER PRIMARY KEY,

                first_name TEXT,

               last_name TEXT,

               age INTEGER,

               grade TEXT,

               registration_date TEXT

 

)              

""")

 

cursor.execute("""

CREATE TABLE  IF NOT EXISTS lessons(

                student_id INTEGER,

                lesson_name TEXT,

                FOREIGN KEY(student_id) REFERENCES students(student_id)

               

               )

               """)

 

print("""To add a student, choose a.\n

To update, choose u.\n

To delete, choose d.\n

To show, choose s.

""")

 

def Add_student(a):

    if a == 'a':

        student_id = int(input('Enter student id :'))

        first_name = str(input('Eenter student first name :'))

        last_name = str(input('Enter student last name :'))

        student_age = int(input('Enter student age :'))

        student_grade = str(input('Ente student grade :'))

        registration_date = str(input('Enter registion date :'))

 

        student_data=(student_id,first_name,last_name,student_age,student_grade,registration_date)

 

        cursor.execute("""

        INSERT INTO students (student_id, first_name, last_name, age, grade, registration_date)

        VALUES (?,?,?,?,?,?)

        """,student_data)

 

        conn.commit()

        print("Student added successfully!")

 

choice = input("Enter your choice: ")

Add_student(choice)


 

conn.close()

Recommended Posts

  • 0
نشر

لقد قمت بتجربة الكود وهو يعمل دون أى مشكلة ويتم إضافة الطلاب في قاعدة البيانات وبعد تحديثها تظهر في الجدول :

image.png.04922cefb33ca1bb0e2a72bfdf7a4aaf.png

image.png.b2fdf44fdc6adcde00c6c644231505ae.png

تأكد من أنك تقوم بفتح ملف قاعدة البيانات الصحيح . حيث الملف الصحيح هو الملف school.db بجوار ملف الكود لديك.

  • 0
نشر
بتاريخ 19 ساعة قال محمد_عاطف:

لقد قمت بتجربة الكود وهو يعمل دون أى مشكلة ويتم إضافة الطلاب في قاعدة البيانات وبعد تحديثها تظهر في الجدول :

image.png.04922cefb33ca1bb0e2a72bfdf7a4aaf.png

image.png.b2fdf44fdc6adcde00c6c644231505ae.png

تأكد من أنك تقوم بفتح ملف قاعدة البيانات الصحيح . حيث الملف الصحيح هو الملف school.db بجوار ملف الكود لديك.

لقد قمت بفعل كل شي لكن لا تظهر البيانات وهذا الخطاء يخرج لي عند اضافة طالب  cursor.execute("""
    ~~~~~~~~~~~~~~^^^^
    INSERT INTO students (student_id, first_name, last_name, age, grade, registration_date)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    VALUES (?,?,?,?,?,?)
    ^^^^^^^^^^^^^^^^^^^^
    """,student_data)
    ^^^^^^^^^^^^^^^^^

 

  • 0
نشر
بتاريخ On 1‏/12‏/2025 at 08:03 قال Faisal Al Zaedi:

لقد قمت بفعل كل شي لكن لا تظهر البيانات وهذا الخطاء يخرج لي عند اضافة طالب  cursor.execute("""
    ~~~~~~~~~~~~~~^^^^
    INSERT INTO students (student_id, first_name, last_name, age, grade, registration_date)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    VALUES (?,?,?,?,?,?)
    ^^^^^^^^^^^^^^^^^^^^
    """,student_data)
    ^^^^^^^^^^^^^^^^^

 

student_id هو PRIMARY KEY، بالتالي غير مسموح بتكرار الرقم، ولو حاولت إضافة طالب برقم 1 وكان هناك طالب سابق بنفس الرقم، ستتوقف قاعدة البيانات عن العمل ويظهر خطأ IntegrityError.

الأفضل هو جعل قاعدة البيانات تقوم بترقيم الطلاب تلقائيًا من خلال تفعيل AUTOINCREMENT بدلاً من إدخال الرقم بنفسك، ولو أردت كتاتبه بشكل يدوي فيجب معالجة الخطأ من خلال try except لإظهار أنّ الرقم مُكرر.

عامًة إليك الكود بالإعتماد على تفعيل AUTOINCREMENT في قاعدة البيانات ويجب عليك حذف ملف قاعدة البيانات القديم school.db من جهازك أولاً، ثم شغل الكود الجديد ليقوم بإنشاء الجدول بالطريقة الصحيحة.

import sqlite3

conn = sqlite3.connect('school.db')
cursor = conn.cursor()

cursor.execute("""
CREATE TABLE IF NOT EXISTS students(
    student_id INTEGER PRIMARY KEY AUTOINCREMENT,
    first_name TEXT,
    last_name TEXT,
    age INTEGER,
    grade TEXT,
    registration_date TEXT
)
""")

cursor.execute("""
CREATE TABLE IF NOT EXISTS lessons(
    student_id INTEGER,
    lesson_name TEXT,
    FOREIGN KEY(student_id) REFERENCES students(student_id)
)
""")

print("""To add a student, choose a.\n
To update, choose u.\n
To delete, choose d.\n
To show, choose s.
""")

def Add_student(a):
    if a == 'a':
        first_name = str(input('Enter student first name: '))
        last_name = str(input('Enter student last name: '))
        student_age = int(input('Enter student age: '))
        student_grade = str(input('Enter student grade: '))
        registration_date = str(input('Enter registration date: '))

        student_data = (first_name, last_name, student_age, student_grade, registration_date)

        try:
            cursor.execute("""
            INSERT INTO students (first_name, last_name, age, grade, registration_date)
            VALUES (?,?,?,?,?)
            """, student_data)

            conn.commit()
            
            print(f"Student added successfully! The new Student ID is: {cursor.lastrowid}")
            
        except Exception as e:
            print(f"Error: {e}")

choice = input("Enter your choice: ")
Add_student(choice)

conn.close()

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...