Aplicarea cheilor externe SQLite
Activează cheile externe SQLite în afara tranzacției și raportează încălcările existente.
import sqlite3
def enable_foreign_keys(db):
if not isinstance(db, sqlite3.Connection) or db.in_transaction:
raise ValueError("foreign_keys.connection")
db.execute("PRAGMA foreign_keys = ON")
if db.execute("PRAGMA foreign_keys").fetchone() != (1,):
raise RuntimeError("foreign_keys.unavailable")
return db.execute("PRAGMA foreign_key_check").fetchall()Modele
Configurează un endpoint compatibil OpenAI sau Anthropic cu URL-ul de bază și cheia API, dacă este necesară. Testează conexiunea. Serverul local trebuie să ruleze; instrumentele externe pot transmite date separat.
Proiect
Testează o inserare invalidă respinsă și un orfan vechi, întoarce auditul fără repararea datelor.
Verifică înainte de aplicare
Compară comportamentul real cu rezultatul așteptat. Dacă o verificare eșuează, cercetează cauza înainte de alte modificări.
import sqlite3
def enable_foreign_keys(db):
if not isinstance(db, sqlite3.Connection) or db.in_transaction:
raise ValueError("foreign_keys.connection")
db.execute("PRAGMA foreign_keys = ON")
if db.execute("PRAGMA foreign_keys").fetchone() != (1,):
raise RuntimeError("foreign_keys.unavailable")
return db.execute("PRAGMA foreign_key_check").fetchall()Revizuiește configurarea bazei de date înainte de a modifica datele stocate
KeyTillage aduce codul de configurare a bazei de date într-o conversație de programare cu IA pentru Windows, ancorată în fișierele proiectului. Începe identificând unde sunt create conexiunile și ce presupune aplicația despre ele. Cere asistentului conectat să inspecteze acest ciclu de viață înainte de a propune schimbarea unei setări, astfel încât revizuirea să țină cont de momentul execuției codului, nu doar de conținutul său.
Activarea aplicării constrângerilor de cheie externă SQLite este o sarcină utilă de proiect. Discută starea tranzacției conexiunii și modul în care codul verifică setarea, apoi distinge această configurare de raportarea încălcărilor deja prezente în baza de date. O propunere trebuie să explice ambele comportamente fără a presupune că activarea unei reguli repară și înregistrările istorice. Păstrează orice decizie de corectare a datelor separată de modificarea configurației.
Revizuiește modificarea și testeaz-o pe un exemplu de unică folosință care conține o înregistrare orfană existentă și o tentativă de inserare nevalidă. Verifică rândurile de audit raportate și comportamentul de respingere în propriul mediu de baze de date. KeyTillage acceptă endpointuri compatibile cu OpenAI sau Anthropic, cu date de autentificare când sunt necesare. Poți alege un model fără restricții acolo unde este disponibil, supus regulilor furnizorului și instrumentelor și limitelor de context ale serverului. Urmărește obținerea unui cod de conexiune inteligibil, al cărui comportament l-ai observat înainte de a-l aplica într-o aplicație reală.
Întrebări înainte de a accepta o modificare a conexiunii
Repară activarea constrângerilor înregistrările orfane existente?
Nu presupune că o face. Sarcina ilustrată activează o setare a conexiunii și raportează încălcările existente. Revizuiește orice reparare propusă a datelor ca operație distinctă, cu modificări așteptate explicite, fără a o lăsa să se strecoare într-o modificare de configurare.
De ce contează starea tranzacției în această sarcină?
Contractul existent cere activarea setării în afara unei tranzacții active. Cere asistentului să inspecteze când intră conexiunea în acea stare și verifică setarea rezultată, fără a presupune că simpla emitere a instrucțiunii stabilește comportamentul dorit.
Ce trebuie să conțină baza de date de test?
Folosește o bază de date mică, de unică folosință, cu relații valide, o înregistrare orfană cunoscută și o scriere care trebuie respinsă când constrângerile sunt active. Verifică atât rezultatul auditului, cât și inserarea, păstrând exemplul independent de datele din producție.
Pot trimite modelului o bază de date din producție?
Preferă schema și cazuri de test anonimizate care conțin doar ceea ce necesită sarcina. Verifică endpointul configurat și destinațiile instrumentelor înainte de a partaja materiale. Un model local necesită propriul server pornit și nu face ca toate instrumentele conectate să fie locale.
KeyTillage · Actualizat 2026-10-25