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

السؤال

نشر

أريد أن يكون المفتاح الأساسي primary key في النموذج model عددًا صحيحًا يتم زيادته تلقائيًا auto increment. لذلك قمت بكتابة الكود التالي بإستخدام flask-sqlalchemy:

class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(255))
    email = db.Column(db.String(255), unique=True, nullable=False)
    created_at = db.Column(db.DateTime, default=db.func.now())

هذا الكود يعمل بشكل جيد، حيث يتم إنشاء الجدول users بدون مشكلة ولكن يظهر الخطأ التالي إن لم أقم بكتابة قيمة id عند إضافة مستخدم جديد:

ERROR: null value in column "id" violates not-null constraint

يبدو أن الخاصية auto increment لا تعمل تلقائيًا، حاولت تغير الكود ولكن نفس المشلكة.

كيف أقوم بجعل العمود يتم زيادة تلقائيًا؟

Recommended Posts

  • 1
نشر

في البداية لاداعي لوضع خاصية autoincrement ,

ستهتم SQLAlechemy's ORM بإنشاء ال ids

تتم زيادة Id تلقائيًا بشكل افتراضي حتى بدون تعيين autoincrement = علامة True .

لذا قم بتعديل الكود من :

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)

إلى :

id = db.Column(db.Integer, primary_key=True)

وسوف تحل المشكلة .

  • 0
نشر

يمكنك بعد تنفيذ الحل المقترح من قِبل محمد أن تقوم بحذف الجدول من قاعدة البيانات ومن ثم إعادة تشغيل تطبيق الflask تى يتم إعادة تنفيذ السطر الخاص ب 

db.create_all()

حيث أن sqlalchemy لا تقوم بتحديث الجداول وإنما تقوم بإنشاؤها إن كانت غير موجودة بالفعل 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...