Cytowanie identyfikatorów SQLite
Ujmij jeden identyfikator SQLite w podwójne cudzysłowy, podwajając cudzysłowy wewnętrzne.
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
- Dodaj endpoint zgodny z OpenAI lub Anthropic, podając bazowy URL i klucz API, jeśli jest wymagany. Sprawdź połączenie. Lokalny serwer modelu musi działać; zdalne narzędzia mogą przesyłać dane oddzielnie.
- Projekt
- Sprawdź spacje i tekst przypominający SQL, odrzucając puste nazwy i NUL bez dzielenia nazwy z kropką na kilka identyfikatorów.
- Sprawdź przed zastosowaniem
- Porównaj rzeczywiste zachowanie z oczekiwanym wynikiem. Jeśli sprawdzenie się nie powiedzie, wyjaśnij przyczynę przed kolejnymi zmianami.
def quote_identifier(name):
if not isinstance(name, str) or not name or chr(0) in name:
raise ValueError("identifier.invalid")
return '"' + name.replace('"', '""') + '"'Oddziel strukturę zapytania od przenoszonych przez nie wartości
Kod dynamicznych zapytań wymaga jasnego rozróżnienia między szukaną wartością a nazwą obiektu bazy danych. QuoteMica zapewnia środowisko programistyczne AI dla Windows do przeglądu tego rozróżnienia w plikach projektu. Zacznij od funkcji tworzącej zapytanie i wyjaśnij, które części mogą się zmieniać. Przed zaproponowaniem zmian poproś asystenta o prześledzenie pochodzenia każdej nazwy i wartości.
Przykład ujmowania identyfikatorów SQLite w cudzysłowy jest jednym z przypadków do zbadania. Sprawdź, jak ujęte w cudzysłowy nazwy docierają do generatora zapytań i czy aplikacja w ogóle powinna je akceptować. Poprawna reprezentacja i autoryzacja to osobne decyzje. Użyteczna propozycja wyjaśnia zarówno ograniczoną odpowiedzialność funkcji pomocniczej, jak i ograniczenia kodu wywołującego, a następnie wskazuje konkretne zapytania do sprawdzenia zamierzonego zachowania.
Wybierz model AI bez cenzury, jeśli oferuje go obsługiwany punkt końcowy zgodny z OpenAI lub punkt końcowy Anthropic, dodając wymagane dane uwierzytelniające. Zasady dostawcy, obsługa narzędzi i limity kontekstu nadal obowiązują dla tego połączenia. Przeczytaj proponowane zmiany zapytań i uruchom testy bazy danych projektu dla reprezentatywnych nazw schematu. Lokalny model używa osobno działającego serwera i nie dowodzi, że narzędzia bazy danych lub inne połączone usługi działają lokalnie.
Punkty przeglądu kodu dynamicznych zapytań
Czy ujęcie nazwy tabeli w cudzysłowy oznacza, że powinna być dozwolona?
Nie. Cudzysłowy przedstawiają identyfikator w składni zapytania; aplikacja nadal musi zdecydować, do których obiektów wolno się odwoływać. Poproś o sprawdzenie tej decyzji w kodzie wywołującym, zwłaszcza gdy nazwa pochodzi z danych kontrolowanych przez użytkownika.
Czy mogę obsługiwać nazwy kolumn jak zwykłe wartości parametrów?
Traktuj strukturę zapytania i wartości danych jako osobne tematy przeglądu. Sprawdź możliwości interfejsu bazy danych i sposób budowania istniejącego zapytania. Przykład identyfikatora nie dowodzi, że związanie wartości parametru może wybrać dowolną nazwę kolumny.
Co powinien wykazać test regresji generatora zapytań?
Powinien wykonać rzeczywiste zapytanie z dozwoloną nazwą wymagającą cudzysłowów i potwierdzić zamierzony wynik. Uwzględnij odrzucane nazwy, jeśli aplikacja je ogranicza. Samo sprawdzenie utworzonego ciągu nie weryfikuje wykonania ani autoryzacji.
Czy QuoteMica automatycznie odkryje każde dynamiczne zapytanie?
Nie zakładaj pełnego pokrycia. Zapytaj, które pliki i miejsca wywołań posłużyły do przygotowania propozycji, i sam wskaż znane generatory zapytań. Kontekst modelu i dostępne narzędzia ograniczają analizę; sprawdź nieprzejrzane ścieżki przed uznaniem szerszej zmiany za ukończoną.
QuoteMica · Zaktualizowano 2026-10-25