Applicazione delle chiavi esterne SQLite
Attiva le chiavi esterne SQLite fuori da una transazione e segnala violazioni esistenti.
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()Modelli
Configura un endpoint compatibile con OpenAI o Anthropic usando URL di base e chiave API, se necessaria. Prova la connessione. Il server locale deve essere in esecuzione; gli strumenti remoti possono trasmettere dati separatamente.
Progetto
Prova un inserimento invalido rifiutato e un orfano precedente, restituendo righe di controllo senza riparare dati.
Controlla prima di applicare
Confronta il comportamento effettivo con il risultato atteso. Se una verifica fallisce, indaga la causa prima di altre modifiche.
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()Rivedi la configurazione del database prima di cambiare i dati salvati
KeyTillage porta il codice di configurazione dei database in una conversazione di programmazione con IA su Windows, fondata sui file del progetto. Inizia identificando dove sono create le connessioni e che cosa presume l'applicazione al riguardo. Chiedi all'assistente collegato di esaminare quel ciclo di vita prima di proporre una modifica alle impostazioni, affinché la revisione consideri quando il codice viene eseguito oltre a ciò che contiene.
Abilitare l'applicazione dei vincoli di chiave esterna SQLite è un'attività utile. Discuti lo stato della transazione della connessione e come il codice verifica l'impostazione, poi distingui tale configurazione dalla segnalazione di violazioni già presenti nel database. Una proposta deve spiegare entrambi i comportamenti senza presumere che abilitare una regola ripari anche i record storici. Mantieni separata dalla modifica di configurazione ogni decisione di correzione dei dati.
Rivedi la modifica e provala su un caso usa e getta contenente un record orfano esistente e un tentativo di inserimento non valido. Controlla le righe di verifica riportate e il comportamento di rifiuto nel tuo ambiente database. KeyTillage supporta endpoint compatibili con OpenAI o Anthropic, con credenziali ove richieste. Puoi scegliere un modello senza restrizioni dove disponibile, nel rispetto delle regole del fornitore e di strumenti e limiti di contesto del server. L'obiettivo è codice di connessione comprensibile, di cui hai osservato il comportamento prima di applicarlo a un'applicazione reale.
Domande prima di accettare una modifica alla connessione
Abilitare i vincoli ripara le righe orfane esistenti?
Non presumere che lo faccia. L'attività illustrata abilita un'impostazione della connessione e segnala violazioni esistenti. Rivedi ogni riparazione dei dati proposta come operazione distinta con cambiamenti attesi espliciti, anziché lasciarla entrare in una modifica alla configurazione.
Perché conta lo stato della transazione in questa attività?
Il contratto esistente richiede di abilitare l'impostazione fuori da una transazione attiva. Chiedi all'assistente di esaminare quando la connessione entra in tale stato e verifica l'impostazione risultante anziché presumere che eseguire l'istruzione stabilisca il comportamento desiderato.
Che cosa deve contenere il database di test?
Usa un piccolo database usa e getta con relazioni valide, un record orfano noto e una scrittura da rifiutare con i vincoli attivi. Verifica sia l'output del controllo sia il comportamento dell'inserimento, mantenendo il caso di prova indipendente dai dati di produzione.
Posso inviare al modello un database di produzione?
Preferisci schema e casi di prova ripuliti contenenti solo ciò che serve all'attività. Rivedi l'endpoint configurato e le destinazioni degli strumenti prima di condividere materiale. Un modello locale richiede un proprio server in esecuzione e non rende locale ogni strumento collegato.
KeyTillage · Aggiornato 2026-10-25