MySQL का उपयोग करने के लिए Django की स्थापना


171

मैं पीएचपी से थोड़ा हटकर पायथन सीखना चाहता हूं। पायथन के साथ वेब विकास करने के लिए मुझे टेम्प्लेटिंग और अन्य चीजों के साथ मदद करने के लिए एक रूपरेखा की आवश्यकता होगी।

मेरे पास एक गैर-उत्पादन सर्वर है जिसका उपयोग मैं सभी वेब विकास सामग्री पर परीक्षण करने के लिए करता हूं। यह एक डेबियन 7.1 LAMP स्टैक है जो सामान्य MySQL-server पैकेज के बजाय MariaDB चलाता है।

कल ही मैंने Django स्थापित किया और अपना पहला प्रोजेक्ट बनाया जिसे firstweb कहा गया । मैंने अभी तक कोई सेटिंग नहीं बदली है।

यहाँ मेरा भ्रम का पहला बड़ा टुकड़ा है। ट्यूटोरियल में मैंने उस व्यक्ति का अनुसरण किया जिसने Django को स्थापित किया, अपनी पहली परियोजना शुरू की, Apache को फिर से शुरू किया, और Django ने तभी से काम किया। वह अपने ब्राउज़र पर गया और बिना किसी समस्या के Django के डिफ़ॉल्ट पृष्ठ पर गया।

मुझे हालांकि, मुझे अपने फर्स्टवेब फ़ोल्डर में सीडी और रन करना है

python manage.py runserver myip:port

और यह काम करता है। कोई दिक्कत नहीं है। लेकिन मैं सोच रहा था कि क्या इस तरह से काम करना चाहिए, और अगर इससे लाइन में समस्या आ जाएगी?

मेरा दूसरा सवाल यह है कि मैं इसे स्थापित करना चाहता हूं इसलिए यह मेरे MySQL डेटाबेस का उपयोग करता है। मैं अपनी सेटिंग में जाता / करती हूं / पहलेweb / firstweb के तहत और मैं इंजन और NAME देखता हूं लेकिन मुझे यकीन नहीं है कि यहां क्या रखा जाए।

और फिर USER, PASSWORD, और HOST क्षेत्रों में यह मेरा डेटाबेस और इसकी साख है? अगर मैं लोकलहोस्ट का उपयोग कर रहा हूं तो क्या मैं केवल HOST क्षेत्र में लोकलहोस्ट रख सकता हूं ?


नोट: ओडी 01/2016 के रूप में अजगर 3.5.x के लिए कोई MySQL ड्राइवर नहीं है। देखें stackoverflow.com/questions/34456770/… तो केवल पायथन 3.4 तक का उपयोग करें। आप अभी भी Django 1.9 (01/2016 के रूप में नवीनतम स्थिर रिलीज) का उपयोग कर सकते हैं।
टॉमस तिन्टेरा

जवाबों:


316

MySQL का समर्थन जोड़ना आसान है। आपके 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',
    }
}

Django 1.7 के रूप में आपके पास MySQL विकल्प फ़ाइलों का उपयोग करने का विकल्प भी है । आप अपनी DATABASESसरणी को इस तरह सेट करके इसे पूरा कर सकते हैं :

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

आपको /path/to/my.cnfऊपर से समान सेटिंग्स के साथ फ़ाइल बनाने की भी आवश्यकता है

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

Django 1.7 में कनेक्ट करने की इस नई विधि के साथ, यह जानना महत्वपूर्ण है कि ऑर्डर कनेक्शन स्थापित हैं:

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

दूसरे शब्दों में, यदि आप विकल्प में डेटाबेस का नाम सेट करते हैं, तो यह NAME पर पूर्ववर्तीता ले जाएगा, जो MySQL विकल्प फ़ाइल में कुछ भी ओवरराइड करेगा।


यदि आप अपने स्थानीय मशीन पर अपने आवेदन का परीक्षण कर रहे हैं, तो आप उपयोग कर सकते हैं

python manage.py runserver

ip:portतर्क जोड़ने से मशीनें आपके विकास एप्लिकेशन को एक्सेस करने के लिए स्वयं के अलावा अन्य की अनुमति देती हैं। एक बार जब आप अपने आवेदन को तैनात करने के लिए तैयार हो जाते हैं, तो मैं djangobook पर Django को नियुक्त करने के अध्याय पर एक नज़र डालने की सलाह देता हूं

मैसकल डिफ़ॉल्ट चरित्र सेट अक्सर utf-8 नहीं होता है, इसलिए इस sql का उपयोग करके अपना डेटाबेस बनाना सुनिश्चित करें:

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin

यदि आप ओरेकल के MySQL कनेक्टर का उपयोग कर रहे हैं तो आपकी ENGINEलाइन इस तरह दिखनी चाहिए:

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

ध्यान दें कि आपको सबसे पहले अपने ओएस पर mysql इंस्टॉल करना होगा।

brew install mysql (MacOS)

इसके अलावा, mysql क्लाइंट पैकेज अजगर 3 के लिए बदल गया है ( MySQL-Clientकेवल अजगर 2 के लिए काम करता है)

pip3 install mysqlclient

26

बहुत पहले कृपया पायथन निर्भरता स्थापित करने के लिए नीचे दिए गए आदेशों को चलाएं अन्यथा अजगर चलाने वाला कमांड त्रुटि देगा।

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

फिर #Andy द्वारा परिभाषित और अंतिम निष्पादन के रूप में settings.py फ़ाइल कॉन्फ़िगर करें:

python manage.py runserver

मज़े करो..!!


18

यदि आप python3.x का उपयोग कर रहे हैं तो कमांड के नीचे चलाएँ

pip install mysqlclient

फिर सेटिंग को बदल दें जैसे

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

1
मैं python 3.6 के साथ virtualenv का उपयोग कर रहा हूं। इससे मेरी जान बचती है। धन्यवाद। इसके अलावा, पहले mysql में DB बनाने के लिए याद रखें
फ्रेड

15

जैसा कि ऊपर कहा गया है, आप आसानी से 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:80और डेटाबेस में है port 3306, और PhpMyadmin परhttp://localhost/phpmyadmin/
  3. यहां से आप अपने डेटाबेस देख सकते हैं और बहुत ही अनुकूल जीयूआई का उपयोग करके उन्हें एक्सेस कर सकते हैं।
  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 का उपयोग कर रहे हैं, जो अधिक पसंदीदा है):

    sudo apt-get install libmysqlclient-dev

    पाइप स्थापित करें MySQL-python

  7. बस!! आपने Django को MySQL के साथ बहुत आसान तरीके से कॉन्फ़िगर किया है।

  8. अब अपना Django प्रोजेक्ट चलाएं:

    python manage.py माइग्रेट करें

    अजगर प्रबंधन Oracle चलानेवाला


7

दरअसल, विभिन्न वातावरणों, अजगर संस्करणों के साथ कई मुद्दे हैं, इत्यादि। आपको अजगर देव फ़ाइलों को भी स्थापित करने की आवश्यकता हो सकती है, इसलिए स्थापना को 'ब्रूट-फोर्स' करने के लिए मैं इन सभी को चलाऊंगा:

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

आपको स्वीकृत उत्तर के साथ जाना अच्छा होना चाहिए। और यदि आप के लिए महत्वपूर्ण है तो अनावश्यक पैकेज को हटा सकते हैं।


7

इन आदेशों को चलाएँ

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

फिर सेटिंग्स को कॉन्फ़िगर करें जैसे

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

Mysql कनेक्शन का आनंद लें


4

एंडी का जवाब मदद करता है लेकिन अगर आपको अपने django सेटिंग में अपने डेटाबेस पासवर्ड को उजागर करने पर चिंता है, तो मैं mysql कनेक्शन पर django के आधिकारिक कॉन्फ़िगरेशन का पालन करने का सुझाव देता हूं: https://docs.djangoproject.com/en/1.7/ref/atat डेटाबेस /

यहाँ उद्धृत:

# 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

एक अन्य विकल्प जो उपयोगी है, वह है कि आप अपने स्टोरेज इंजन को django के लिए सेट कर सकते हैं, आप इसे अपनी सेटिंग में चाहते हैं:

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

4

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

और आप mysql का उपयोग कर सकते हैं

यह एक प्रदर्शन उदाहरण है, Django संस्करण 1.11.5 पर परीक्षण: Django-pool-showcase


3
  1. इंस्टॉल mysqlclient

sudo pip3 install mysqlclient

यदि आपको त्रुटि मिलती है:

कमांड "python setup.py egg_info" त्रुटि कोड 1 के साथ / tmp / pip-install-dbljg4tx / mysqlclient / में विफल रहा

फिर:

 1. sudo apt install libmysqlclient-dev python-mysqldb

 2. sudo pip3 install mysqlclient

  1. सेटिंग्स को संशोधित करें

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'website',
            'USER': 'root',
            'PASSWORD': '',
            'HOST': '127.0.0.1',
            'PORT': '3306',
            'OPTION': {'init_command':"SET sql_mode='STRICT_TRANS_TABLE',"},
        }
    }

1

MySQL डेटाबेस का उपयोग करने के लिए इसे सेटअप करने के लिए दिए गए चरणों का पालन करें:

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, lets 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

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

यहाँ एक Djenv पर MySQL का उपयोग करने के लिए Django की स्थापना के लिए एक पूर्ण अधिष्ठापन गाइड है:

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.