@joefromthere: Das zweite Argument von `Cursor.execute()` muss eine Sequenz von Werten sein. Was Du Da machst kann eventuell bei SQLite funktionieren solange `test` einstellig bleibt, ist aber falsch. Eben weil es auf die Nase fällt sobald die ID an der Stelle grösser als 9 wird.
Man würde so etwas auch nicht in Python mit einer Abfrage pro Personendatensatz machen sondern *eine* SQL-Abfrage schreiben welche die gewünschten Daten selektiert. Wie gesagt das SQL-Grundlagen. Such Dir da mal ein Tutorial das Du durcharbeiten kannst. Es gibt zum Beispiel ein Wikibook, oder
Learn SQL The Hard Way. Letzteres ist zwar noch nicht vollendet, aber das was schon vorhanden ist, deckt Deinen einfachen Fall schon ab.
``SELECT * FROM …`` macht man üblicherweise nicht, denn damit erhält man Code der von der Anzahl und Reihenfolge der Tabellenspalten abhängig ist. Wenn man daran später einmal Veränderungen vornehmen muss, dann muss man auch alle Codestellen ändern. Wenn man die Reihenfolge der Spalten in der Datenbank ändert, oder neue Spalten hinzufügt, dann muss man am Code nichts ändern wenn man dort im SELECT explizit aufgelistet hätte welche Spalten und damit auch in welcher Reihenfolge man in der Ergebnismenge haben möchte.
Die Zuweisung ``test = primaryAdressTag`` ist überflüssig und `test2` ist kein guter Name.
Die Fehlerbehandlung ist ungünstig. Wenn man an der Stelle das Programm sowieso abbricht kann man es auch ganz sein lassen mit dem ``except`` und hat dann sogar noch mehr Informationsausgabe über das Problem.
Der Code im ``finally``-Zweig ist fehlerhaft denn wenn beim `connect()`-Aufruf eine Ausnahme ausgelöst wird, dann ist der Name `connection` nicht definiert und das ``if`` im ``finally`` führt zu einem `NameError`. Sollte der `connect()`-Aufruf funktionieren, dann ist diese ``if``-Bedingung *immer* wahr. Das ``if`` macht also absolut keinen Sinn an der Stelle.