No module named 'MySQLdb'
阿新 • • 發佈:2018-11-07
python版本:3.6.5
Django版本:2.0.5 (進入python互動模式,import django ; print(django.VERSION) )
使用pycharm建立一個專案(study01)後,應用為app,在配置檔案中配置使用mysql資料庫後,啟動的時候報錯了,錯誤資訊如下:
import MySQLdb as Database
ModuleNotFoundError: No module named 'MySQLdb'
在python3以上版本中,MySQLdb模組已經廢棄了,主要是pymysql模組連線資料庫,解決辦法:
在專案目錄和setting.py同級的目錄下的 __init__.py檔案中新增以下內容即可。
import pymysql
pymysql.install_as_MySQLdb()
擴充套件
1、在setting中配置django使用mysql資料庫
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'test', 'USER': 'root', 'PASSWORD':'password123', 'PORT':3306, 'HOST':'192.168.16.191', 'CHARSET':'utf8', } }
參考:https://docs.djangoproject.com/en/2.0/ref/settings/#databases
2、pip freeze 檢視 pymysql 版本
>>> import pymysql
>>> print(pymysql.__version__)
3、在開發過程中,由於資料庫表的重新設計,需要刪除原表,並通過Django的ORM功能重新同步表。
問題:從資料庫裡面刪除了表,後來再註釋了models中的類,重新同步,報錯
解決:
python manage.py makemigrations python manage.py migrate --fake #主要是 --fake 這個引數
4、靜態檔案配置
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'statics'),
)
5、admin的靜態檔案配置
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
同步admin靜態檔案命令
$ python admin.py collectstatic
備註: 在配置系統靜態檔案和admin靜態檔案的時候,兩個目錄不能一樣,否則會報錯
6、快取配置
請參考:https://blog.csdn.net/m0_37886429/article/details/78027164
7、django使用中文
在配置檔案settings.py中配置
#LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-Hans' #desplay chinese
TIME_ZONE = 'Asia/Shanghai'
8、每一次呼叫query物件;顯示對應的sql語句
在配置檔案settings.py中配置
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console':{
'level':'DEBUG',
'class':'logging.StreamHandler',
},
},
'loggers': {
'django.db.backends': {
'handlers': ['console'],
'propagate': True,
'level':'DEBUG',
},
}
}
9、django使用redis快取
在配置檔案settings.py中配置
CACHES = {
'default': {
'BACKEND': 'redis_cache.cache.RedisCache',
'LOCATION': '127.0.0.1:6379',
'db':14,
"OPTIONS": {
"CLIENT_CLASS": "redis_cache.client.DefaultClient",
},
},
}
REDIS_TIMEOUT=7*24*60*60
CUBES_REDIS_TIMEOUT=60*60
NEVER_REDIS_TIMEOUT=365*24*60*60
10、django中include用法
首先在和settings.py同級目錄的 urls.py 檔案中匯入 include 模組,並配置
from django.conf.urls import url,include
from django.contrib import admin
from articles import urls
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^article/', include('articles .urls')),
]
其次在 articles 應用中建立 urls.py 檔案,配置如下
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'home/$', views.home),
url(r'index/([0-9]{4})/([0-9]{2})/([0-9]{2})/$', views.index), #無命名url,用()表示,寫檢視函式的時候,有幾個括號,需要傳遞幾個引數
url(r'test/(?P<year>[0-9]{4})/$', views.test), #命名url,,寫檢視函式的時候,傳遞引數的名必須是year
url(r'sign/$', views.sign,name='ssss'), #給url起別名,在前端呼叫的時候通過模板語言格式呼叫 {% url 'ssss' %}
url(r'login/$', views.login,{'name':'abc'}), #給url傳遞引數,寫檢視函式的時候,用key作為引數;如果這個引數和有名字的url在一起用的時候,不要起相同的名字
]