Seite 1 von 1

django -> database connection ->

Verfasst: Montag 9. Mai 2011, 15:20
von alexPython
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ß

Re: django -> database connection ->

Verfasst: Montag 9. Mai 2011, 15:26
von Hyperion
Also laut Doku wird das ja so gemacht. Worauf bezieht sich denn der Fehler genau? Poste doch mal gen kompletten Stacktrace.

Re: django -> database connection ->

Verfasst: Montag 9. Mai 2011, 15:35
von alexPython
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ß

Re: django -> database connection ->

Verfasst: Montag 9. Mai 2011, 15:57
von alexPython
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ß

Re: django -> database connection ->

Verfasst: Montag 9. Mai 2011, 22:44
von /me
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.

Re: django -> database connection ->

Verfasst: Dienstag 10. Mai 2011, 07:43
von alexPython
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