Seite 1 von 1

sqlite3 - einfach nur eien leere datenbank anlegen

Verfasst: Montag 18. Juni 2007, 16:16
von Costi
ich hab von datenbanken wirklich keine ahnung ( ;

also...
ich will nichts weiter als eine sqlite3 datenbank-datei erstelle, django macht dan hofentlich schon den rest

danke

Verfasst: Montag 18. Juni 2007, 16:24
von rafael
Einfach irgendeinen File erstellen.

Code: Alles auswählen

touch database.db
unter Unix.

Re: sqlite3 - einfach nur eien leere datenbank anlegen

Verfasst: Montag 18. Juni 2007, 16:55
von gerold
Costi hat geschrieben:ich will nichts weiter als eine sqlite3 datenbank-datei erstelle
Hallo Costi!

Dieser Code hier erstellt dir eine SQLite3-Datenbank im "C:"-Root-Ordner:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-

try:
    # Ab Python 2.5
    import sqlite3
except ImportError:
    # Vor Python 2.5 --> pysqlite --> http://initd.org/tracker/pysqlite
    from pysqlite2 import dbapi2 as sqlite3

# Verbindung herstellen
conn = sqlite3.connect(r"C:\neue_datenbank.s3db")
conn.close()
mfg
Gerold
:-)

Re: sqlite3 - einfach nur eien leere datenbank anlegen

Verfasst: Montag 18. Juni 2007, 17:03
von rafael
gerold hat geschrieben:
Costi hat geschrieben:ich will nichts weiter als eine sqlite3 datenbank-datei erstelle
Hallo Costi!

Dieser Code hier erstellt dir eine SQLite3-Datenbank im "C:"-Root-Ordner:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-

try:
    # Ab Python 2.5
    import sqlite3
except ImportError:
    # Vor Python 2.5 --> pysqlite --> http://initd.org/tracker/pysqlite
    from pysqlite2 import dbapi2 as sqlite3

# Verbindung herstellen
conn = sqlite3.connect(r"C:\neue_datenbank.s3db")
conn.close()
mfg
Gerold
:-)
Dein Codesnippet verbindet doch zu einer schon existierenden Datenbank. Wenn man diese noch nicht erstellt hat, passiert das hier:

Code: Alles auswählen

In [1]: from sqlite3 import connect

In [2]: conn = connect('~/neue_datenbank.s3db')
---------------------------------------------------------------------------
<class 'sqlite3.OperationalError'>        Traceback (most recent call last)

/home/rafael/<ipython console> in <module>()

<class 'sqlite3.OperationalError'>: unable to open database file

Verfasst: Montag 18. Juni 2007, 17:10
von Sr4l
Da gibt es keine Unterschied.

Wenn man den Code ausführt und keine DB da ist erstellt er sie, sonst connectet er nur.

Es liegt wohl an deinem '~' ?
Hast du absoluter Pfad ausprobiert?

Verfasst: Montag 18. Juni 2007, 17:12
von rafael
Ok, mit absolutem Pfad klappts. :D

Verfasst: Montag 18. Juni 2007, 18:17
von Costi
hmm irgendwie scheint irgendwas immer noch nicht zu funzen:

ich bekomme folgenden fehler:

Code: Alles auswählen

OperationalError at /write/das ist bla/
no such table: helo_text
ich habe eine app die ``helo`` heist in diese befindet sich ein model namens ``Text`` mit einen attribut ``text`` vom typ ``CharField``

und die aufgerufene view sieht folgendermassen aus:

Code: Alles auswählen

def write(req, text):
    t = Text(text=text)
    t.save()
    return HttpResponse('text "' + text + '" wurde gespeicherrt')
der auruf von ``python manage.py syncdb`` fuehrte allerdings zu keinen fehler


vieleicht wist ihr was hier nicht geklappt hat.....

ps:
@admins: darf meine signatur "Bombing for peace is like fucking for virginity" lauten oder waere das zu vulgaer/unangebracht?

Verfasst: Montag 18. Juni 2007, 18:31
von Sr4l
Wenn laut Fehlermeldung der 'table' nicht da ist heißt das die Tabelle gibt es nicht.
Tabellen legt man z.B so an:

Code: Alles auswählen

import sqlite3

con = sqlite3.connect('mydatabase.db')
cur = con.cursor()
cur.execute('CREATE TABLE foo (o_id INTEGER PRIMARY KEY, fruit VARCHAR(20), veges VARCHAR(30))')
Die Tabelle heißt hier foo.

Verfasst: Montag 18. Juni 2007, 18:34
von Costi
hmmm klingt logisch ( ;

also hat django (das web framework das iich benutze) mir noch keine erstellt, bzw mit welchen befehl tut er das ?

Verfasst: Montag 18. Juni 2007, 19:17
von rafael
http://www.djangobook.com/en/beta/chapter05/

Wenn du deine Application in der settings.py hast und ``manage.py syncdb`` ausgeführt hast, müsste die Tabelle eigentlich erstellt sein.

Zeig uns am besten mal dein Model und die Imports...

Verfasst: Montag 18. Juni 2007, 19:42
von Costi
Wenn du deine Application in der settings.py hast
nein, hatte ich nicht !

bug fixed

(wie war das explicit is better than implicit ; )