2013-10-04 58 views
120

我想稍微離開PHP並學習Python。爲了使用Python進行Web開發,我需要一個框架來幫助模板化和其他的事情。設置Django使用MySQL

我有一個非生產服務器,我用它來測試所有web開發的東西。它是運行MariaDB而不是通用MySQL服務器軟件包的Debian 7.1 LAMP棧。我的第一個項目叫firstweb。我還沒有改變任何設置。

這是我的第一個大混亂。在教程中,我跟隨了安裝Django的人,開始了他的第一個項目,重新啓動了Apache,Django從此開始工作。他去他的瀏覽器,並沒有問題,去Django的默認頁面。

我不過,我有cd到我的firstweb文件夾,運行

python manage.py runserver myip:port 

和它的作品。沒問題。但是我想知道它是否應該像這樣工作,如果這會導致問題的發生?

我的第二個問題是我想設置它,所以它使用我的MySQL數據庫。我進入我的settings.py下/ firstweb/firstweb,我看到引擎和名稱,但我不知道要放在這裏。

然後在USER,PASSWORD和HOST區域是我的數據庫和憑據?如果我使用本地主機我可以只把本地主機在主機區域?

+0

注:爲OD 01/2016沒有MySQL驅動程序爲Python 3.5.x.請參閱http://stackoverflow.com/questions/34456770/python-connector-for-django-1-9-and-python-3-5 所以只能使用Python 3.4。你仍然可以使用Django 1.9(截至01/2016最新的穩定版本)。 –

回答

213

MySQL support很容易添加。在你DATABASES字典,你將有一個這樣的條目:

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', 
    } 
} 

您還可以使用MySQL的option files的選項,Django的1.7。您可以通過設置您的DATABASES陣列像這樣實現:

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

您還需要從上述

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

創建/path/to/my.cnf文件具有類似的設置使用在Django 1.7連接的新方法,它重要的是要知道建立連接順序:

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

在行吟詩人如果你在OPTIONS中設置數據庫的名字,這將優先於NAME,它將覆蓋MySQL選項文件中的任何內容。


如果你只是在本地計算機上測試應用程序,你可以使用

python manage.py runserver 

添加ip:port參數允許比自己的其他機器訪問你的開發應用程序。一旦你準備好部署應用程序,我建議在djangobook

Mysql的默認字符集採取一看一章Deploying Django往往不是UTF-8,因此請務必使用該SQL創建數據庫:

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin 

如果您正在使用Oracle's MySQL connectorENGINE線應該是這樣的:

'ENGINE': 'mysql.connector.django', 
20

到第一個請運行下面的命令來安裝Python的依賴形成的否則python runserver命令會拋出錯誤。

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

然後配置settings.py文件由#Andy並在最後執行的定義:

python manage.py runserver 

玩得開心..!

12

由於所有上面所說的,你可以很容易地首先從https://www.apachefriends.org/download.html 安裝XAMPP然後按照說明爲:

  1. 安裝和運行http://www.unixmen.com/install-xampp-stack-ubuntu-14-04/ XAMPP,然後開始從GUI Apache Web Server和MySQL數據庫。
  2. 你可以從這裏你http://localhost/phpmyadmin/
  3. 配置Web服務器,只要你想,而是由默認的Web服務器是在在port 3306http://localhost:80和數據庫,phpMyAdmin的可以看到你的數據庫,並使用非常友好的圖形用戶界面對其進行訪問。
  4. 創建你想在你的Django項目上使用的任何數據庫。
  5. 編輯您的settings.py文件,如:

    DATABASES = { 
    'default': { 
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'DB_NAME', 
        'HOST': '127.0.0.1', 
        'PORT': '3306', 
        'USER': 'root', 
        'PASSWORD': '', 
    }} 
    
  6. 中的virtualenv安裝以下軟件包(如果你使用上的virtualenv Django的,所以更優選):

    命令和apt-get安裝的libmysqlclient-dev的

    PIP安裝MySQL-python的

  7. 這就是它!你已經用一種非常簡單的方式配置了Django和MySQL。

  8. 現在運行Django項目:

    蟒蛇manage.py遷移

    蟒蛇manage.py runserver命令

8

其實,有不同的環境,不同的Python版本很多問題,所以上。您可能還需要安裝Python開發的文件,所以要「蠻力」安裝我會跑所有這些:

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

你應該是好去接受的答案。如果這對你很重要,可以刪除不必要的軟件包。

3

安迪的回答幫助,但如果你對你的Django設置暴露你的數據庫密碼的關注,我建議遵循Django的關於MySQL連接官方配置:https://docs.djangoproject.com/en/1.7/ref/databases/

這裏引述:

# 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 

要替換「HOST」:在設置「127.0.0.1」,簡單地將其添加在my.cnf:

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

另一個選項是有用的,就是設置你的S爲django引擎引擎,你可能想要在你的setting.py中:

'OPTIONS': { 
    'init_command': 'SET storage_engine=INNODB', 
} 
0

你必須先創建一個MySQL數據庫。然後去settings.py文件並編輯'DATABASES'字典,你的MySQL憑據:

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', 
} 
} 

這裏是設置Django中使用MySQL中的virtualenv一個完整的安裝指南:

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

+0

鏈接不再工作...;) – cwhisperer

3

運行這些命令

sudo apt-get install python-dev python3-dev

命令和apt-get安裝的libmysqlclient-dev的

PIP安裝MySQL-python的

PIP安裝pymysql

PIP安裝的mysql

然後配置settings.py像

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'django_db', 
     'HOST': '127.0.0.1', 
     'PORT': '3306', 
     'USER': 'root', 
     'PASSWORD': '123456', 
    } 
} 

享受MySQL連接

9

如果您正在使用python3.x然後運行下面的命令

pip install mysqlclient 

然後改變setting.py像

DATABASES = { 
'default': { 
    'ENGINE': 'django.db.backends.mysql', 
    'NAME': 'DB', 
    'USER': 'username', 
    'PASSWORD': 'passwd', 
    } 
    } 
1

settings.py

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

}

則:

python manage.py migrate 

,如果成功,將產生論文表:

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 

和u將可以使用MySQL。

這是一個展示例子,在測試版本的Django 1.11.5: Django-pool-showcase