Django mit MySQL connection

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Wie gesagt die datei passt so und du sollst sie __nicht__ ändern. Du willst deinen Paketmanager verwenden um das Paket, dass mysql_config enthält zu installieren…

EDIT:// Sry, ich hatte versehentlich angenommen, dass du ein Linux verwendest, dem ist allerdings scheinbar nicht so ;) Schau mal ob dir hier wo geholfen wird: http://www.google.at/search?hl=de&q=ins ... =&aq=f&oq= Grundsätzlich brauchst du das dev paket von Mysql, dort ist mysql_config dabei…

EDIT2:// Schau mal ob im xampp installationsordner irgendwo ne mysql_config rumfliegt, wenn nicht solltest du mysql vlt mal richtig installieren…
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

mein system ist mac. xampp habe ich installiert, irgendwie muss ich eine verbindung zu mysql von xampp paket herstellen, die frage ist eben wie?
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Wenn wir von dem: http://www.apachefriends.org/en/xampp.html reden und dort kein mysql_config drin ist, dann gar nicht… Wie gesagt installier MySQL (inklusive der dev version für den Client) normal über deinen Paketmanager (nen mac hat doch sowas oder?)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

apollo13 hat geschrieben:(nen mac hat doch sowas oder?)
Nein. Es gibt fink und MacPorts, aber die sind nicht Standard, so wie APT oder FreeBSD Ports auf anderen Unix-Systemen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Wobei ich sagen muss, dass MacPorts nicht gerade das gelbe vom Ei ist, da installier ich mir die Sachen lieber selbst.

MySQL existiert für Mac und lässt sich komfortabel installieren, habe dazu auch schonmal eine Anleitung geschrieben: http://www.icoost.com/programmiersprach ... tallieren/
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

Habe nun MySQL installiert und die Ausgabe erhalten:

Code: Alles auswählen

running install
running bdist_egg
running egg_info
writing MySQL_python.egg-info/PKG-INFO
writing top-level names to MySQL_python.egg-info/top_level.txt
writing dependency_links to MySQL_python.egg-info/dependency_links.txt
reading manifest file 'MySQL_python.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'MySQL_python.egg-info/SOURCES.txt'
installing library code to build/bdist.macosx-10.6-universal/egg
running install_lib
running build_py
creating build
creating build/lib.macosx-10.6-universal-2.6
copying _mysql_exceptions.py -> build/lib.macosx-10.6-universal-2.6
creating build/lib.macosx-10.6-universal-2.6/MySQLdb
copying MySQLdb/__init__.py -> build/lib.macosx-10.6-universal-2.6/MySQLdb
copying MySQLdb/converters.py -> build/lib.macosx-10.6-universal-2.6/MySQLdb
copying MySQLdb/connections.py -> build/lib.macosx-10.6-universal-2.6/MySQLdb
copying MySQLdb/cursors.py -> build/lib.macosx-10.6-universal-2.6/MySQLdb
copying MySQLdb/release.py -> build/lib.macosx-10.6-universal-2.6/MySQLdb
copying MySQLdb/times.py -> build/lib.macosx-10.6-universal-2.6/MySQLdb
creating build/lib.macosx-10.6-universal-2.6/MySQLdb/constants
copying MySQLdb/constants/__init__.py -> build/lib.macosx-10.6-universal-2.6/MySQLdb/constants
copying MySQLdb/constants/CR.py -> build/lib.macosx-10.6-universal-2.6/MySQLdb/constants
copying MySQLdb/constants/FIELD_TYPE.py -> build/lib.macosx-10.6-universal-2.6/MySQLdb/constants
copying MySQLdb/constants/ER.py -> build/lib.macosx-10.6-universal-2.6/MySQLdb/constants
copying MySQLdb/constants/FLAG.py -> build/lib.macosx-10.6-universal-2.6/MySQLdb/constants
copying MySQLdb/constants/REFRESH.py -> build/lib.macosx-10.6-universal-2.6/MySQLdb/constants
copying MySQLdb/constants/CLIENT.py -> build/lib.macosx-10.6-universal-2.6/MySQLdb/constants
running build_ext
building '_mysql' extension
creating build/temp.macosx-10.6-universal-2.6
gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -pipe -Dversion_info=(1,2,3,'gamma',1) -D__version__=1.2.3c1 -I/usr/local/mysql/include -I/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c _mysql.c -o build/temp.macosx-10.6-universal-2.6/_mysql.o -g -Os -arch x86_64 -fno-common -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT -DDONT_DECLARE_CXA_PURE_VIRTUAL
unable to execute gcc-4.2: No such file or directory
error: command 'gcc-4.2' failed with exit status 1
sieht doch gut aus, würde ich mal meinen.
Nun wie kann ich MySQL modul importieren?
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Code: Alles auswählen

unable to execute gcc-4.2: No such file or directory
error: command 'gcc-4.2' failed with exit status 1 
sieht doch gut aus, würde ich mal meinen.
:lol:
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

ja, aber nach dieser Anleitung ist es die Fehlermeldung normal
http://www.icoost.com/programmiersprach ... tallieren/
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

Code: Alles auswählen

>>> import MySQLdb
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "MySQLdb/__init__.py", line 19, in <module>
    import _mysql
ImportError: No module named _mysql
die installation ist leider misslungen.
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Nein ist es nicht, du hast anscheinend kein gcc installiert! "unable to execute gcc-4.2: No such file or directory"
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

genau, ich musste xcode installieren und nun funktioniert es perfekt. vielen vielen dank leute....
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

nun ist mysql server installiert, der nächste schritt ist, was muss ich der django settings.py hinschreiben.
DATABASE_ENGINE = 'mysql' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
DATABASE_NAME = '' # Or path to database file if using sqlite3.
DATABASE_USER = 'root' # Not used with sqlite3.
DATABASE_PASSWORD = 'xxxxxxxx' # Not used with sqlite3.
DATABASE_HOST = '/var/run/mysql' # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3.
Bei name was muss ich hineinschreiben. Hinweis, habe einen Mac. :-)
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Du musst in MySQL eine Datenbank erstellen und diesen Namen dann angeben. Am besten legst du dann auch einen extra Benutzer für diese DB an und verwendest diesen. Mit dem "root" sollte man nie arbeiten.

Außerdem ist dein Host falsch. Host ist der Name unter dem ein Server im Netzwerk erreichbar ist, und nicht (wie bei dir) der Pfad zur Executable. Bei einem lokalen Server (wie bei dir) musst du nichts angeben (bzw. ``localhost``).
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

erhalte jetzt die Fehlermeldung

Code: Alles auswählen

Validating models...
Unhandled exception in thread started by <function inner_run at 0x1007b0668>
Traceback (most recent call last):
  File "/Library/Python/2.6/site-packages/django/core/management/commands/runserver.py", line 48, in inner_run
    self.validate(display_num_errors=True)
  File "/Library/Python/2.6/site-packages/django/core/management/base.py", line 249, in validate
    num_errors = get_validation_errors(s, app)
  File "/Library/Python/2.6/site-packages/django/core/management/validation.py", line 67, in get_validation_errors
    connection.validation.validate_field(e, opts, f)
  File "/Library/Python/2.6/site-packages/django/db/backends/mysql/validation.py", line 15, in validate_field
    db_version = connection.get_server_version()
  File "/Library/Python/2.6/site-packages/django/db/backends/mysql/base.py", line 297, in get_server_version
    self.cursor()
  File "/Library/Python/2.6/site-packages/django/db/backends/__init__.py", line 81, in cursor
    cursor = self._cursor()
  File "/Library/Python/2.6/site-packages/django/db/backends/mysql/base.py", line 281, in _cursor
    self.connection = Database.connect(**kwargs)
  File "/Library/Python/2.6/site-packages/MySQL_python-1.2.3c1-py2.6-macosx-10.6-universal.egg/MySQLdb/__init__.py", line 81, in Connect
    
  File "/Library/Python/2.6/site-packages/MySQL_python-1.2.3c1-py2.6-macosx-10.6-universal.egg/MySQLdb/connections.py", line 188, in __init__
_mysql_exceptions.OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/run/mysql' (2)")
was mache ich den falsch

Code: Alles auswählen

DATABASE_ENGINE = 'mysql'           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
DATABASE_NAME = 'web'             # Or path to database file if using sqlite3.
DATABASE_USER = 'webdev'             # Not used with sqlite3.
DATABASE_PASSWORD = 'xxxxxx'         # Not used with sqlite3.
DATABASE_HOST = 'localhost'             # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = ''             # Set to empty string for default. Not used with sqlite3.
habe die Verbindung mit python getestet und klappt

Code: Alles auswählen

import MySQLdb
import sys

try:
    conn = MySQLdb.connect (host = "localhost",
                        user = "webdev",
                        passwd = "xxxxxx",
                        db = "web")
    cursor = conn.cursor()
    cursor.execute ("""SELECT id, data FROM example""")
    row = cursor.fetchall()
    for r in row:
        print(r)
    cursor.close()
    conn.close()
except MySQLdb.Error, e:
    print "Error %d: %s" % (e.args[0], e.args[1])
    sys.exit(1)

    
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Code: Alles auswählen

DATABASE_HOST = 'localhost'             # Set to empty string for localhost. Not used with sqlite3.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

DATABASE_HOST = ' ' # Set to empty string for localhost. Not used with sqlite3.
habe jetzt so geändert und erhalte immer noch derselbe Fehlermeldung.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Scheint ein Konfigurationsproblem von deinem MySQL-Server zu sein. Such mal nach der Fehlermeldung bei Google, da gibt es genug Hilfestellungen!
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

mit der konfiguration sollte doch alles in Ordnung sein, weil die Verbindung zwischen python und mysql funktioniert ja, ausser django framework. habe im net schon gesucht, aber leider nichts gefunden.
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

hier noch einen ansicht von server
Bild
es stimmt mit dem socket irgendetwas nicht. in django settings.py

Code: Alles auswählen

DATABASE_ENGINE = 'mysql'           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
DATABASE_NAME = 'example'             # Or path to database file if using sqlite3.
DATABASE_USER = 'webdev'             # Not used with sqlite3.
DATABASE_PASSWORD = 'xxxxxx'         # Not used with sqlite3.
DATABASE_HOST = '/tmp/mysql.sock'             # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = ''             # Set to empty string for default. Not used with sqlite3.
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

setz es auf 127.0.0.1; localhost heißt für mysql, dass er sockets verwenden soll, das für die entwicklung aber zumeist herzlichst egal ist würd ich tcp verbindungen nehmen, sind zumeist weniger nervenaufreibend ;()
Antworten