मैं एक पायथन दुभाषिया से निम्नलिखित कोड चलाता हूं, और सम्मिलित कथन विफल होने की उम्मीद करता हूं और किसी प्रकार का अपवाद फेंक देता हूं। लेकिन यह नहीं हो रहा है:मेरी sqlite3 विदेशी कुंजी क्यों काम नहीं कर रही हैं?
Python 2.6.5 (r265:79096, Mar 19 2010, 21:48:26) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> conn = sqlite3.connect("test.db")
>>> conn.executescript("""
... pragma foreign_keys=on;
... begin transaction;
... create table t1 (i integer primary key, a);
... create table t2 (i, a, foreign key (i) references t1(i));
... commit;
... """)
<sqlite3.Cursor object at 0x0229DAA0>
>>> c = conn.cursor()
>>> c.execute("insert into t2 values (6, 8)")
<sqlite3.Cursor object at 0x0229DAD0>
>>> #???
...
>>> conn.commit()
>>> #???????????
...
>>> c.execute("select * from t2")
<sqlite3.Cursor object at 0x0229DAD0>
>>> c.fetchall()
[(6, 8)]
>>> #but why!?
...
>>>
क्या किसी को पता है कि यह क्यों काम नहीं करना चाहता? मेरी समझ यह है कि डालने में असफल होना चाहिए क्योंकि t2(i)
के लिए दिए गए मान t1
में प्राथमिक कुंजी नहीं है, लेकिन यह खुशी से वैसे भी करता है ...?
मैं यह कहने जा रहा था कि मुझे चाहिए, क्योंकि मैं इसे स्क्लाइट इंटरेक्टिव दुभाषिया के साथ काम करने के लिए प्राप्त कर सकता हूं, लेकिन तब मुझे एहसास हुआ कि पाइथन का अपना स्क्लाइट बनाया गया है - मेरे सिस्टम पर एक नया होना चाहिए लेकिन अंदर नहीं मेरा अजगर धन्यवाद –
आह, आप सही थे, मेरे पास 3.5.9 है। –