vs2017 + Python3.6 +Django1.11 連接mysql數據庫


  不廢話直接來。

  vs2017創建一個新的python web項目之后默認鏈接數據庫是sqlite。但是我就想連接到Mysql 上面玩,於是開始倒騰了。下面是步驟

  1.修改settings.py 文件需要修改兩處

  第一處:

INSTALLED_APPS = ['app',
    # Add your apps here to enable them
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'PythonDjangoPro',] #這一行必須是你創建的web項目名稱

  第二處:

DATABASES = {
    #'default': {
        #'ENGINE': 'django.db.backends.sqlite3',
        #'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        
    #}
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'NAME': 'root',
        'USER': 'root',
        'PASSWORD': 'root',
    }
}

現在就要處理一個很關鍵的問題,因為需要添加pymysql到項目python包中

然后咱們需要配置項目加載識別鏈接數據庫方式。在項目路徑下找到 __init__.py

#coding:utf-8
import pymysql
pymysql.install_as_MySQLdb()

好了咱們現在要去 app/models.py 創建需要創建到數據庫中的實體,在models.py中代碼如下

#coding:utf-8
from django.db import models
class User(models.Model):
    nickname = models.CharField('昵稱', max_length=150)
    openid = models.CharField('ID', max_length=128, primary_key=True)
    head = models.URLField('頭像')
    gender = models.CharField('性別', max_length=2, default='保密') 

現在配置修改到現在就很想躍躍欲試一下了。但是別急肯定報錯,我不想寫出來錯誤,我繼續實現正確配置方式。因為現在mysqlclient 肯定出現連接bug,因為版本問題,其實就是有一個版本型號判斷在搞鬼

現在打開你python安裝目錄,依此打開 :X:\Program Files (x86)\python\Lib\site-packages\django\db\backends\mysql  找到base.py 用你飢渴難耐的vs2017編輯器注釋掉這段該死的代碼:

if version < (1, 3, 3):
    raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)

對,是直接注釋掉

好了,我們開始一本正經實現一次通過manage.py 實體類創建表到mysql數據庫

現在你需要這樣

 

 然后在打開的項目目錄下面按住shit鍵,打開右鍵菜單

現在你需要依此輸入一下代碼:

python manage.py makemigrations

python manage.py migrate

然后你會看到很多OK

打開Mysql數據庫可視化界面看看數據庫是不是有東西(表)

 

 好啦,剩下的就自由發揮吧

卧薪嘗膽飲咖啡~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM