Citarea identificatorilor SQLite
Încadrează un identificator SQLite în ghilimele duble și dublează ghilimelele interioare.
def quote_identifier(name):
if not isinstance(name, str) or not name or chr(0) in name:
raise ValueError("identifier.invalid")
return '"' + name.replace('"', '""') + '"'- 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
- Verifică spații și text asemănător SQL, respingând numele goale și NUL fără a împărți un nume cu puncte în mai mulți identificatori.
- Verifică înainte de aplicare
- Compară comportamentul real cu rezultatul așteptat. Dacă o verificare eșuează, cercetează cauza înainte de alte modificări.
def quote_identifier(name):
if not isinstance(name, str) or not name or chr(0) in name:
raise ValueError("identifier.invalid")
return '"' + name.replace('"', '""') + '"'Separă structura interogării de valorile pe care le transportă
Codul interogărilor dinamice necesită o distincție clară între o valoare căutată și numele unui obiect din baza de date. QuoteMica oferă un spațiu de lucru Windows pentru programare cu IA, pentru analiza acestei distincții în fișierele proiectului. Începe cu funcția care produce interogarea și explică ce părți pot varia. Cere asistentului să urmărească originea fiecărui nume și a fiecărei valori înainte de a propune editări.
Exemplul de delimitare cu ghilimele a identificatorilor SQLite este un caz de examinat. Verifică modul în care numele delimitate ajung la constructorul interogării și dacă aplicația ar trebui să accepte acele nume de la bun început. Reprezentarea corectă și autorizarea sunt decizii separate. O propunere utilă explică atât responsabilitatea limitată a funcției auxiliare, cât și constrângerile apelantului, apoi identifică interogări concrete de executat pentru verificarea comportamentului dorit.
Alege un model IA fără cenzură dacă endpointul compatibil OpenAI sau Anthropic acceptat oferă unul, adăugând date de autentificare când sunt necesare. Politicile furnizorului, instrumentele acceptate și limitele contextului guvernează în continuare conexiunea. Citește modificările propuse pentru interogări și rulează testele bazei de date a proiectului cu nume reprezentative din schemă. Un model local folosește un server care rulează separat și nu stabilește că instrumentele bazei de date sau alte servicii conectate funcționează local.
Puncte de verificat în codul interogărilor dinamice
Delimitarea numelui unui tabel înseamnă că acesta trebuie permis?
Nu. Delimitarea reprezintă un identificator în sintaxa interogării; aplicația trebuie în continuare să decidă ce obiecte pot fi accesate. Cere inspectarea acestei decizii la apelant, mai ales când numele provine dintr-o intrare controlată de utilizator.
Pot trata numele coloanelor ca valori obișnuite legate ca parametri?
Tratează structura interogării și valorile datelor ca subiecte separate de analiză. Inspectează ce acceptă interfața bazei de date și cum este construită interogarea existentă. Exemplul cu identificatori nu dovedește că legarea unei valori poate selecta un nume arbitrar de coloană.
Ce trebuie să demonstreze un test de regresie al constructorului de interogări?
Trebuie să execute interogarea reală cu un nume permis care necesită delimitare și să confirme rezultatul dorit. Include nume respinse acolo unde aplicația le restricționează. Verificarea exclusivă a șirului produs nu validează execuția sau autorizarea.
QuoteMica va descoperi automat toate interogările dinamice?
Nu presupune acoperire completă. Întreabă ce fișiere și puncte de apel au stat la baza propunerii și identifică personal constructorii de interogări cunoscuți. Contextul modelului și instrumentele disponibile limitează inspecția; verifică fluxurile neexaminate înainte de a considera finalizată o modificare mai amplă.
QuoteMica · Actualizat 2026-10-25