# Doc # Script to extract Contacts from Sailfish Contact SQLite DB located at # # # Links # FileFormatdescription: https://docs.fileformat.com/email/vcf/#vcf-30-example # Pytho vobject: http://eventable.github.io/vobject/ # ChangeLog import sqlite3 import vobject import uuid SQLconn = sqlite3.connect('../Testdata/system/Contacts/qtcontacts-sqlite/contacts.db') try: SQLContCur = SQLconn.cursor() for row in SQLContCur.execute('SELECT * FROM Contacts'): print(row[4] + ' ' + row[6]) # contactID abfragen contactID=row[0] # wir erstellen das Objekt vcf = vobject.vCard() vcf.add('uid').value = str(uuid.uuid4()) #vcf.add('uid').value = "Testdaten" vcf.add('n').value = vobject.vcard.Name( family=row[6], given=row[4] ) vcf.add('fn').value =row[1] SQLEmailCur = SQLconn.cursor() ## Abfragen E-Mail-Adressen for Emailrow in SQLEmailCur.execute('SELECT * from EmailAddresses JOIN Details on Details.detailId= EmailAddresses.detailId where EmailAddresses.contactId = ' + str(contactID)): # debug ausgabe print("debug: " + str(Emailrow[2]) + " at " + str(Emailrow[9])) email = vcf.add('email') email.value = str(Emailrow[2]) # nur den Typ einpflegen, wenn das hier nicht none ist if Emailrow[9] != None: email.type_param = str(Emailrow[9]) print(vcf.serialize()) # hier brauchen wir einige eception handles -> wie bekommen wir die einzelnen exceptions heruas ? #except: #print("Error in executing SQL") except AttributeError: print("Datatype mismatch") raise # das generöse Except am Ende except: print("unhandled error") raise