Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: utf8 -*-
- import csv
- import codecs
- import time
- from sqlite3 import dbapi2 as sqlite
- #.decode('latin')
- #.decoden('utf8')
- def readPayPalCSV():
- with codecs.open('./Data/Herunterladen_utf8.csv', 'rb') as csvfile:
- csvReader = csv.DictReader(csvfile, delimiter=",")
- header = [c for c in csvReader.fieldnames if c.strip()]
- csvcontent = []
- for c in csvReader:
- newdict = {}
- for h in header:
- newdict[h.strip()] = c[h]
- csvcontent.append(newdict)
- print "\n PayPal Liste\n%s Einträge" % len(csvcontent)
- return csvcontent
- paypal_dict_list = readPayPalCSV()
- #connect to db
- con = sqlite.connect("Data/database_test")
- cur = con.cursor()
- #del db and create new db
- def create_db():
- #paypal
- cur.execute(u'''drop table if exists paypal_complete''')
- cur.execute(u'''create table if not exists paypal_complete ([Datum] text, [Zeit] text, [Zeitzone] text, [Name] text, [Art] text, [Status] text, [Währung] text, [Brutto] text, [Gebühr] text, [Netto] text, [Von E-Mail-Adresse] text, [An E-Mail-Adresse] text, [Transaktionscode] text PRIMARY KEY, [Status der Gegenpartei] text, [Adressstatus] text, [Verwendungszweck] text, [Artikelnummer] text, [Betrag für Versandkosten] text, [Versicherungsbetrag] text, [Umsatzsteuer] text, [Option 1 - Name] text, [Option 1 - Wert] text, [Option 2 - Name] text, [Option 2 - Wert] text, [Auktions-Site] text, [Käufer-ID] text, [Artikel-URL] text, [Angebotsende] text, [Vorgangs-Nr.] text, [Rechnungs-Nr.] text, [Txn-Referenzkennung] text, [Rechnungsnummer] text, [Individuelle Nummer] text, [Bestätigungsnummer] text, [Guthaben] text, [Adresse] text, [Zusätzliche Angaben] text, [Ort] text, [Staat/Provinz/Region/Landkreis/Territorium/Präfektur/Republik] text, [PLZ] text, [Land] text, [Telefonnummer der Kontaktperson] text)''')
- create_db()
- def print_header(tabelle):
- print "\n header for", tabelle
- cur.execute("PRAGMA table_info("+tabelle+")")
- print cur.fetchall()
- print_header("paypal_complete")
- def insertDict(curs, tablename, data_list):
- for data in data_list:
- fields = ['[' + k + ']' for k in data.keys()]
- values = ['[' + v + ']' for v in data.values()]
- placeholder = "?"
- fieldlist = ",".join(fields)
- placeholderlist = ",".join([placeholder] * len(fields))
- query = "insert into %s(%s) values (%s)" % (tablename, fieldlist, placeholderlist)
- print "query"
- print query
- curs.execute(query, values)
- insertDict(cur, "paypal_complete", paypal_dict_list)
- #show first db entries
- def print_lines(db, count=5):
- print "\n", db
- cur.execute('select * from '+db)
- for n, a in enumerate(cur):
- if n == count:
- break
- else:
- print a
- print_lines("paypal_complete")
- #close connection
- con.commit()
- #RESULT
- header for paypal_complete
- [(0, u'Datum', u'text', 0, None, 0), (1, u'Zeit', u'text', 0, None, 0), (2, u'Zeitzone', u'text', 0, None, 0), (3, u'Name', u'text', 0, None, 0), (4, u'Art', u'text', 0, None, 0), (5, u'Status', u'text', 0, None, 0), (6, u'W\xe4hrung', u'text', 0, None, 0), (7, u'Brutto', u'text', 0, None, 0), (8, u'Geb\xfchr', u'text', 0, None, 0), (9, u'Netto', u'text', 0, None, 0), (10, u'Von E-Mail-Adresse', u'text', 0, None, 0), (11, u'An E-Mail-Adresse', u'text', 0, None, 0), (12, u'Transaktionscode', u'text', 0, None, 1), (13, u'Status der Gegenpartei', u'text', 0, None, 0), (14, u'Adressstatus', u'text', 0, None, 0), (15, u'Verwendungszweck', u'text', 0, None, 0), (16, u'Artikelnummer', u'text', 0, None, 0), (17, u'Betrag f\xfcr Versandkosten', u'text', 0, None, 0), (18, u'Versicherungsbetrag', u'text', 0, None, 0), (19, u'Umsatzsteuer', u'text', 0, None, 0), (20, u'Option 1 - Name', u'text', 0, None, 0), (21, u'Option 1 - Wert', u'text', 0, None, 0), (22, u'Option 2 - Name', u'text', 0, None, 0), (23, u'Option 2 - Wert', u'text', 0, None, 0), (24, u'Auktions-Site', u'text', 0, None, 0), (25, u'K\xe4ufer-ID', u'text', 0, None, 0), (26, u'Artikel-URL', u'text', 0, None, 0), (27, u'Angebotsende', u'text', 0, None, 0), (28, u'Vorgangs-Nr.', u'text', 0, None, 0), (29, u'Rechnungs-Nr.', u'text', 0, None, 0), (30, u'Txn-Referenzkennung', u'text', 0, None, 0), (31, u'Rechnungsnummer', u'text', 0, None, 0), (32, u'Individuelle Nummer', u'text', 0, None, 0), (33, u'Best\xe4tigungsnummer', u'text', 0, None, 0), (34, u'Guthaben', u'text', 0, None, 0), (35, u'Adresse', u'text', 0, None, 0), (36, u'Zus\xe4tzliche Angaben', u'text', 0, None, 0), (37, u'Ort', u'text', 0, None, 0), (38, u'Staat/Provinz/Region/Landkreis/Territorium/Pr\xe4fektur/Republik', u'text', 0, None, 0), (39, u'PLZ', u'text', 0, None, 0), (40, u'Land', u'text', 0, None, 0), (41, u'Telefonnummer der Kontaktperson', u'text', 0, None, 0)]
- query
- insert into paypal_complete([Transaktionscode],[Von E-Mail-Adresse],[Staat/Provinz/Region/Landkreis/Territorium/Präfektur/Republik],[Option 1 - Name],[Käufer-ID],[An E-Mail-Adresse],[Txn-Referenzkennung],[Status],[Option 2 - Wert],[Status der Gegenpartei],[Vorgangs-Nr.],[Option 1 - Wert],[Verwendungszweck],[Ort],[Adresse],[Option 2 - Name],[Guthaben],[Versicherungsbetrag],[Betrag für Versandkosten],[Artikel-URL],[Land],[Zeitzone],[Auktions-Site],[Angebotsende],[Name],[Zeit],[Adressstatus],[Gebühr],[Netto],[Währung],[Rechnungsnummer],[Artikelnummer],[Brutto],[Individuelle Nummer],[Art],[Zusätzliche Angaben],[Telefonnummer der Kontaktperson],[Bestätigungsnummer],[Umsatzsteuer],[Datum],[PLZ],[Rechnungs-Nr.]) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
- Traceback (most recent call last):
- File "import_pp2db.py", line 55, in <module>
- insertDict(cur, "paypal_complete", paypal_dict_list)
- File "import_pp2db.py", line 54, in insertDict
- curs.execute(query, values)
- sqlite3.ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings.
Add Comment
Please, Sign In to add comment