SQL- Script mit sqlite3 ausführen

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Benutzeravatar
Schaf220
User
Beiträge: 113
Registriert: Montag 11. August 2008, 16:00
Wohnort: Bremen
Kontaktdaten:

Hallo liebe Community,

ich bin langsam am Verzweifeln. Ich habe ein SQL-Script mit folgendem Inhalt:

http://www.xup.in/dl,56655141/script.sql/

Nun möchte ich die Befehle für sqlite3 übernehmen. Als erstes habe ich die ganzen unnötigen Kommentare entfernt. Dann habe ich due datei eingelesen und die unnötigen Zeilenumbrüche entfernt. Anschließend habe ich alle zeieln zu einem String zusammen gefügt. Es gibt nur Syntax Error udn ich weiß nicht warum. Habt ihr vieleicht eine Idee, was ich machen kann?

Hier man mein Versuch:

Code: Alles auswählen

#! /usr/bin/env python
# -*- coding: utf-8 -*-
from sqlite3 import dbapi2 as sqlite

liste = []
f = open("script.sql", "r")
line = f.readlines()
for x in line:
    x.rstrip('\n')
    liste.append(x[:-1])

table = ""
for e in liste:
    table += e
    table += " "

print table

dbName = "testDB.sqlite"
con = sqlite.connect(dbName)
cur = con.cursor()
cur.execute(table)

Mit freundlichen Grüßen
schaf220
Zuletzt geändert von Schaf220 am Freitag 14. Januar 2011, 17:37, insgesamt 2-mal geändert.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Hui... der Code sieht teilweise abenteuerlich aus!

1.) Ist das nicht ein MySQL Dump? Wenn ja kann es ja durchaus sein, dass SQLite in einigen Dingen eine andere Syntax besitzt und es daran scheitert?

2.) Welcher Fehler kommt denn genau?

3.) In dem Paste scheint das Encoding nicht zu stimmen!

4.) Du willst nicht wirklich zig SQL-Befehler mit einem execute() ausführen; lies Dir dazu doch noch mal die Doku duch.

5.) Wieso eigentlich muss man das mit Python machen; die paar Tabellen würde ich doch manuell extrahieren und entsprechend einfügen; selbiges gilt für die wenigen Datensätze.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
Schaf220
User
Beiträge: 113
Registriert: Montag 11. August 2008, 16:00
Wohnort: Bremen
Kontaktdaten:

1.) Ja das ist ein MySQL Dump.

2.) Das sind eigentlich nur Syntaxerrors. Schon bei dem ersten Befehl SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; --> schein es nicht zu geben in sqllite

3.) Das encoding hatte ich vergessen zu posten. --> jetzt verbessert

4.) executescript() habe ich schon gesehen, hat aber nicht geklappt

5.) Es ist Teil meines Programmes und soll eine DB beim ersten Start des Programmes anlegen.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Nein das geht so nicht, Sqlite kennt weder das set, noch Engines. Du kannst das erst ausfuehren, wenn das (das von sqlite unterstuetzte Subset von) Standard-SQL ist.

Mehr dazu in der Sqlite Doku: http://sqlite.org/lang.html
Benutzeravatar
Schaf220
User
Beiträge: 113
Registriert: Montag 11. August 2008, 16:00
Wohnort: Bremen
Kontaktdaten:

Vielen Dank ich werden mich jetzt mal rann machen, das hinzubiegen.
Antworten