django -> database connection ->

Django, Flask, Bottle, WSGI, CGI…
Antworten
alexPython
User
Beiträge: 52
Registriert: Donnerstag 7. April 2011, 13:26

Hallo,

ich will in django ein select auf eine vorhandene datenbank abschicken. (mysql)
mit folendem code funktioniert es:

Code: Alles auswählen

db = MySQLdb.connect(user=dbUser, db=database, passwd=dbPasswd, host=dbHost)
cursor = db.cursor()
cursor.execute('SELECT distinct(bla) FROM TBL_Blubb ORDER BY bla')
names = [row[0] for row in cursor.fetchall()]
db.close()
hierbei handelt es sich aber nicht um frameworkinterne dinge.
ich würde hierfür gerne das framework benutzen:

Code: Alles auswählen

from django.db import connections, transaction
cursor = connections['mydatabase'].cursor()
cursor.execute('SELECT distinct(bla) FROM TBL_blub ORDER BY bla')
names = [row[0] for row in cursor.fetchall()]
transaction.commit_unless_managed(using='mydatabase')
in meiner settings.py habe ich die datenbank angegeben.
ich bekomme nun den Fehler "ConnectionDoesNotExist"

ich werde nur select-anweisungen ausführen...

muss ich nun syncdb ausführen?
wenn ja, wird da was in die datenbank was geschrieben oder ist das nur für die verbindung?


Gruß
Zuletzt geändert von alexPython am Montag 9. Mai 2011, 15:31, insgesamt 1-mal geändert.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Also laut Doku wird das ja so gemacht. Worauf bezieht sich denn der Fehler genau? Poste doch mal gen kompletten Stacktrace.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
alexPython
User
Beiträge: 52
Registriert: Donnerstag 7. April 2011, 13:26

hab meinen text editiert während du gepostet hast.

vorher hatte ich ja
db = MySQLdb.connect(user=dbUser, db=database, passwd=dbPasswd, host=dbHost)

benutzt, was keine django-komponente ist.

ich habe es nun so gemacht, wie oben angegeben.

was passiert bei syncdb? ich will nicht, dass in die datenbank
was geschrieben wird!

Gruß
alexPython
User
Beiträge: 52
Registriert: Donnerstag 7. April 2011, 13:26

Hallo,

ich hatte die connection in eine andere settings.py geschrieben :D
nun funktioniert es wie beschrieben.

nach syncdb hat django auch keine tabellen in meine datenbank
geschrieben.

ich gehe nun davon aus, dass das nur bei der default-datenbank
geschieht und dort die tabellen, wie z.B.
django_session
angelegt werden

Gruß
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

alexPython hat geschrieben:nach syncdb hat django auch keine tabellen in meine datenbank
geschrieben.

ich gehe nun davon aus, dass das nur bei der default-datenbank
geschieht und dort die tabellen, wie z.B.
django_session
angelegt werden
Statt "davon ausgehen" könntest du auch einfach die Dokumentation zu Django lesen. syncdb legt Tabellen für unter INSTALLED_APPS konfigurierte Applikationen anhand derer Models an und zwar dann, wenn eine Tabelle dieses Namens noch nicht existiert.
alexPython
User
Beiträge: 52
Registriert: Donnerstag 7. April 2011, 13:26

das hab ich auch schon gelesen, nur wenn man 3 Tage am Stück liest,
hat man leider auch mal was vergessen.

danke für deine Auskunft
Antworten