it-swarm.com.de

Einstellung Django zur Verwendung von MySQL

Ich möchte mich von PHP ein wenig entfernen und Python lernen. Um Webentwicklung mit Python zu machen, benötige ich ein Framework, das beim Templaten und andere Dinge.

Ich besitze einen Nicht-Produktionsserver, auf dem ich alle Webentwicklungsaufgaben teste. Es ist ein Debian 7.1 LAMP-Stack, der MariaDB anstelle des üblichen MySQL-Server-Pakets ausführt.

Gestern habe ich Django installiert und mein erstes Projekt mit dem Namen firstweb erstellt. Ich habe noch keine Einstellungen geändert.

Hier ist meine erste große Verwirrung. In dem Tutorial habe ich den Kerl verfolgt, der Django installiert hat, sein erstes Projekt gestartet, Apache neu gestartet und von da an Django gearbeitet. Er ging zu seinem Browser und ging zu Django Standardseite ohne Probleme.

Mir muss ich allerdings in meinen firstweb Ordner cd und laufen

python manage.py runserver myip:port

Und es funktioniert. Kein Problem. Aber ich frage mich, ob es so funktionieren soll und ob dies später zu Problemen führen wird?

Meine zweite Frage ist, dass ich es so einrichten möchte, dass es meine MySQL-Datenbank verwendet. Ich gehe in meine settings.py unter/firstweb/firstweb und sehe ENGINE und NAME, bin mir aber nicht sicher, was ich hier einfügen soll.

Und in den Bereichen USER, PASSWORD und Host sind dies meine Datenbank und ihre Anmeldeinformationen? Wenn ich localhost verwende, kann ich localhost einfach in den Host-Bereich einfügen ?

158
gregor

MySQL-Unterstützung ist einfach hinzuzufügen. In Ihrem DATABASES Wörterbuch haben Sie einen Eintrag wie diesen:

DATABASES = {
    'default': {
        'ENGINE': 'Django.db.backends.mysql', 
        'NAME': 'DB_NAME',
        'USER': 'DB_USER',
        'PASSWORD': 'DB_PASSWORD',
        'Host': 'localhost',   # Or an IP Address that your DB is hosted on
        'PORT': '3306',
    }
}

Sie haben auch die Möglichkeit, MySQL Optionsdateien zu verwenden, ab Django 1.7. Sie können dies erreichen, indem Sie Ihr DATABASES -Array folgendermaßen einstellen:

DATABASES = {
    'default': {
        'ENGINE': 'Django.db.backends.mysql',
        'OPTIONS': {
            'read_default_file': '/path/to/my.cnf',
        },
    }
}

Sie müssen auch die Datei /path/to/my.cnf Mit ähnlichen Einstellungen wie oben erstellen

[client]
database = DB_NAME
Host = localhost
user = DB_USER
password = DB_PASSWORD
default-character-set = utf8

Bei dieser neuen Verbindungsmethode in Django 1.7 ist es wichtig zu wissen, dass die Ordnungsverbindungen hergestellt sind:

1. OPTIONS.
2. NAME, USER, PASSWORD, Host, PORT
3. MySQL option files.

Mit anderen Worten, wenn Sie den Namen der Datenbank in OPTIONEN festlegen, hat dies Vorrang vor NAME, was alles in einer MySQL-Optionsdatei außer Kraft setzen würde.


Wenn Sie Ihre Anwendung nur auf Ihrem lokalen Computer testen, können Sie verwenden

python manage.py runserver

Durch Hinzufügen des Arguments ip:port Können andere Computer als Ihre eigenen auf Ihre Entwicklungsanwendung zugreifen. Wenn Sie bereit sind, Ihre Anwendung bereitzustellen, sollten Sie das Kapitel Bereitstellen von Django im Djangobook lesen

Der Mysql-Standardzeichensatz ist häufig nicht utf-8. Stellen Sie daher sicher, dass Sie Ihre Datenbank mit folgendem SQL-Code erstellen:

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin

Wenn Sie den MySQL-Connector von Oracle verwenden, sollte Ihre ENGINE -Zeile folgendermaßen aussehen:

'ENGINE': 'mysql.connector.Django',

Beachten Sie, dass Sie zuerst mysql auf Ihrem Betriebssystem installieren müssen.

brew install mysql (MacOS)

Außerdem wurde das mysql-Clientpaket für python 3) geändert (MySQL-Client Funktioniert nur für python 2)

pip3 install mysqlclient
278
Andy

Führen Sie bis zum ersten Mal die folgenden Befehle aus, um python dependencies zu installieren, andernfalls python runserver command wird einen Fehler auslösen.

Sudo apt-get install libmysqlclient-dev
Sudo pip install MySQL-python

Konfigurieren Sie dann die settings.py-Datei wie in #Andy definiert und führen Sie zum letzten Mal Folgendes aus:

python manage.py runserver

Habe Spaß..!!

25
Ritesh

Wenn Sie python3.x verwenden, führen Sie den folgenden Befehl aus

pip install mysqlclient

Dann ändere setting.py wie

DATABASES = {
'default': {
    'ENGINE': 'Django.db.backends.mysql',
    'NAME': 'DB',
     'USER': 'username',
    'PASSWORD': 'passwd',
  }
  }
14
Manoj Jadhav

Wie alles oben Gesagte, können Sie xampp einfach zuerst von https://www.apachefriends.org/download.html installieren. Folgen Sie dann den Anweisungen wie folgt:

  1. Installieren und starten Sie xampp von http://www.unixmen.com/install-xampp-stack-ubuntu-14-04/ und starten Sie dann Apache Web Server und MySQL-Datenbank von der GUI.
  2. Sie können Ihren Webserver nach Belieben konfigurieren, der Webserver befindet sich jedoch standardmäßig unter http://localhost:80 und Datenbank bei port 3306 und PhpMyadmin bei http://localhost/phpmyadmin/
  3. Von hier aus können Sie Ihre Datenbanken anzeigen und über eine sehr benutzerfreundliche Benutzeroberfläche darauf zugreifen.
  4. Erstellen Sie eine beliebige Datenbank, die Sie für Ihr Django Project verwenden möchten.
  5. Bearbeite dein settings.py Datei wie:

    DATABASES = {
    'default': {
        'ENGINE': 'Django.db.backends.mysql',
        'NAME': 'DB_NAME',
        'Host': '127.0.0.1',
        'PORT': '3306',
        'USER': 'root',
        'PASSWORD': '',
    }}
    
  6. Installieren Sie die folgenden Pakete in virtualenv (wenn Sie Django auf virtualenv verwenden, was bevorzugter ist):

    Sudo apt-get installiert libmysqlclient-dev

    pip installiere MySQL-Python

  7. Das ist es!! Sie haben auf sehr einfache Weise Django mit MySQL konfiguriert.

  8. Führen Sie nun Ihr Django Projekt aus:

    python manage.py migrieren

    python manage.py runserver

14
root

Tatsächlich gibt es viele Probleme mit verschiedenen Umgebungen, python Versionen usw. Möglicherweise müssen Sie auch python dev-Dateien installieren, um Brute-Force zu betreiben 'Die Installation würde ich alle diese ausführen:

Sudo apt-get install python-dev python3-dev
Sudo apt-get install libmysqlclient-dev
pip install MySQL-python
pip install pymysql
pip install mysqlclient

Sie sollten mit der akzeptierten Antwort einverstanden sein. Und kann die unnötigen Pakete entfernen, wenn das für Sie wichtig ist.

8
mimoralea

Führen Sie diese Befehle aus

Sudo apt-get install python-dev python3-dev

Sudo apt-get installiert libmysqlclient-dev

pip installiere MySQL-Python

pip install pymysql

pip installiere mysqlclient

Dann konfiguriere settings.py wie

DATABASES = {
    'default': {
        'ENGINE': 'Django.db.backends.mysql',
        'NAME': 'Django_db',
        'Host': '127.0.0.1',
        'PORT': '3306',
        'USER': 'root',
        'PASSWORD': '123456',
    }
}

Genießen Sie MySQL-Verbindung

6
Deepak Kumar

Andys Antwort hilft, aber wenn Sie Bedenken haben, Ihr Datenbankkennwort in Ihrer Django Einstellung preiszugeben, schlage ich vor, Django offizielle Konfiguration auf MySQL-Verbindung zu folgen: https://docs.djangoproject.com/en/1.7/ref/databases/

Zitiert hier als:

# settings.py
DATABASES = {
    'default': {
        'ENGINE': 'Django.db.backends.mysql',
        'OPTIONS': {
            'read_default_file': '/path/to/my.cnf',
        },
    }
}


# my.cnf
[client]
database = NAME
user = USER
password = PASSWORD
default-character-set = utf8

Um 'Host' zu ersetzen: '127.0.0.1' in der Einstellung, fügen Sie es einfach in my.cnf hinzu:

# my.cnf
[client]
database = NAME
Host = Host NAME or IP
user = USER
password = PASSWORD
default-character-set = utf8

Eine andere OPTION, die nützlich ist, besteht darin, Ihre Speicher-Engine für Django festzulegen. Vielleicht möchten Sie sie in Ihrer setting.py:

'OPTIONS': {
   'init_command': 'SET storage_engine=INNODB',
}
4
Jiawei Dai

settings.py

DATABASES = {
'default': {
    'ENGINE': 'Django.db.backends.mysql',
    'NAME': 'Django',
    'USER': 'root',
    'PASSWORD': '*****',
    'Host': '***.***.***.***',
    'PORT': '3306',
    'OPTIONS': {
        'autocommit': True,
    },
}

}

dann:

python manage.py migrate

wenn der Erfolg diese Tabellen generiert:

auth_group
auth_group_permissions
auth_permission
auth_user
auth_user_groups
auth_user_user_permissions
Django_admin_log
Django_content_type
Django_migrations
Django_session

und Sie können MySQL verwenden.

dies ist ein Vorzeigebeispiel, testen Sie Django version 1.11.5: Django-pool-showcase

3
LuciferJack

Befolgen Sie die angegebenen Schritte, um es für die Verwendung der MySQL-Datenbank einzurichten:

1) Install MySQL Database Connector :

    Sudo apt-get install libmysqlclient-dev

2) Install the mysqlclient library :

    pip install mysqlclient

3) Install MySQL server, with the following command :

    Sudo apt-get install mysql-server

4) Create the Database :

    i) Verify that the MySQL service is running:

        systemctl status mysql.service

    ii) Log in with your MySQL credentials using the following command where -u is the flag for declaring your username and -p is the flag that tells MySQL that this user requires a password :  

        mysql -u db_user -p


    iii) CREATE DATABASE db_name;

    iv) Exit MySQL server, press CTRL + D.

5) Add the MySQL Database Connection to your Application:

    i) Navigate to the settings.py file and replace the current DATABASES lines with the following:

        # Database
        # https://docs.djangoproject.com/en/2.0/ref/settings/#databases

        DATABASES = {
            'default': {
                'ENGINE': 'Django.db.backends.mysql',
                'OPTIONS': {
                    'read_default_file': '/etc/mysql/my.cnf',
                },
            }
        }
        ...

    ii) Next, let’s edit the config file so that it has your MySQL credentials. Use vi as Sudo to edit the file and add the following information:

        Sudo vi /etc/mysql/my.cnf

        database = db_name
        user = db_user
        password = db_password
        default-character-set = utf8

6) Once the file has been edited, we need to restart MySQL for the changes to take effect :

    systemctl daemon-reload

    systemctl restart mysql

7) Test MySQL Connection to Application:

    python manage.py runserver your-server-ip:8000
1
Shubham Gupta

Sie müssen zuerst eine MySQL-Datenbank erstellen. Dann geh zu settings.py Datei und bearbeiten Sie die 'DATABASES' Wörterbuch mit Ihren MySQL-Zugangsdaten:

DATABASES = {
 'default': {
 'ENGINE': 'Django.db.backends.mysql',
 'NAME': 'YOUR_DATABASE_NAME',
 'USER': 'YOUR_MYSQL_USER',
 'PASSWORD': 'YOUR_MYSQL_PASS',
 'Host': 'localhost',   # Or an IP that your DB is hosted on
 'PORT': '3306',
 }
}

Hier ist eine vollständige Installationsanleitung zum Einrichten von Django zur Verwendung von MySQL auf einem virtuellen Computer:

http://codex.themedelta.com/how-to-install-Django-with-mysql-in-a-virtualenv-on-linux/

0
Sibi M