मैं निम्नलिखित कथात्मक परिभाषा के साथ एक मेज है संभाल SQLAlchemy करता है:कैसे तालिका परिभाषा अद्वितीय बाधा
class Type(Base):
__tablename__ = 'Type'
id = Column(Integer, primary_key=True)
name = Column(String, unique = True)
def __init__(self, name):
self.name = name
स्तंभ "नाम" के लिए एक अनूठा बाधा है, लेकिन मैं ऐसा करने में सक्षम हूँ
type1 = Type('name1')
session.add(type1)
type2 = Type(type1.name)
session.add(type2)
तो, जैसा कि देखा जा सकता है, अद्वितीय बाधा बिल्कुल जांच नहीं की गई है, क्योंकि मैंने सत्र 2 ऑब्जेक्ट्स को उसी नाम से जोड़ा है।
जब मैं session.commit()
करता हूं, तो मुझे एक mysql त्रुटि मिलती है क्योंकि बाधा mysql तालिका में भी है।
क्या यह संभव है कि sqlalchemy मुझे पहले से बताता है कि मैं इसे नहीं बना सकता या पहचान नहीं सकता और उसी "नाम" कॉलम के साथ 2 प्रविष्टियां नहीं डालता? यदि नहीं, तो क्या मुझे सभी मौजूदा नामों को याद रखना चाहिए, इसलिए मैं ऑब्जेक्ट बनाने से पहले जांच कर सकता हूं कि वे मौजूद हैं या नहीं?
मैं केवल एक डेटा डालने करते रहेंगे, तो मुझे यकीन है कि ऐसा नहीं होता है बनाती हूँ। मेरा सवाल यह है कि कैसे sqlalchemy फ़ील्ड की विशिष्टता को नियंत्रित करता है – duduklein
@ डुडुकलीन यह विशिष्टता को संभाल नहीं करता है। और मेरा जवाब बताता है क्यों। –