sqlite3 - einfach nur eien leere datenbank anlegen

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Montag 18. Juni 2007, 16:16

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
cp != mv
rafael
User
Beiträge: 189
Registriert: Mittwoch 26. Juli 2006, 16:13

Montag 18. Juni 2007, 16:24

Einfach irgendeinen File erstellen.

Code: Alles auswählen

touch database.db
unter Unix.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Montag 18. Juni 2007, 16:55

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
rafael
User
Beiträge: 189
Registriert: Mittwoch 26. Juli 2006, 16:13

Montag 18. Juni 2007, 17:03

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
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Montag 18. Juni 2007, 17:10

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?
Zuletzt geändert von Sr4l am Montag 18. Juni 2007, 17:13, insgesamt 1-mal geändert.
rafael
User
Beiträge: 189
Registriert: Mittwoch 26. Juli 2006, 16:13

Montag 18. Juni 2007, 17:12

Ok, mit absolutem Pfad klappts. :D
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Montag 18. Juni 2007, 18:17

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?
cp != mv
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Montag 18. Juni 2007, 18:31

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.
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Montag 18. Juni 2007, 18:34

hmmm klingt logisch ( ;

also hat django (das web framework das iich benutze) mir noch keine erstellt, bzw mit welchen befehl tut er das ?
cp != mv
rafael
User
Beiträge: 189
Registriert: Mittwoch 26. Juli 2006, 16:13

Montag 18. Juni 2007, 19:17

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...
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Montag 18. Juni 2007, 19:42

Wenn du deine Application in der settings.py hast
nein, hatte ich nicht !

bug fixed

(wie war das explicit is better than implicit ; )
cp != mv
Antworten