文档章节

2、Django数据库模块配置和管理

翱誽的微笑
 翱誽的微笑
发布于 2017/07/20 17:33
字数 668
阅读 20
收藏 0

1、django默认支持sqlite3、mysql、oracle、postgresql数据库,像db2和sqlserver之类的数据库需要第三方的支持,具体详见:
https://docs.djangoproject.com/en/1.11/ref/databases/

输入图片说明

https://docs.djangoproject.com/en/1.11/ref/databases/#using-a-3rd-party-database-backend

###一、sqlite3### django默认使用sqlite的数据库,默认自带sqlite的数据库驱动 引擎名称:

django.db.backends.sqlite3

###二、mysql驱动程序###

1、Mysqldb(mysql-python):  https://pypi.python.org/pypi/MySQL-python/1.2.5
比较经典,但MySQLdb只支持Python2.*,还不支持3.*

2、mysqlclient:  https://pypi.python.org/pypi/mysqlclient
MySQLdb的分支,支持python3.3-python3.5

3、MySQL Connector/Python:  https://dev.mysql.com/downloads/connector/python/
MySQL官方的一个驱动

4、PyMySQL:https://pypi.python.org/pypi/PyMySQL
纯python的mysql驱动,选择这个的理由为,其他驱动对系统依赖比较高,需要c++什么的,所以选择这个,可以直接用pip install pymysql安装

###三、演示pymysql的使用### 1、安装pymysql

pip install pymysql
#删除pymysql
pip uninstall pymysql

2、修改配置文件

vim mysite/settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'aud2',
        'USER': 'aud2',
        'PASSWORD': 'aud2!@#',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

3、在工程目录的__init__.py添加代码,不然会报错,Django默认使用的是Mysqldb模块,我们使用的pymsyql,需要调整下代码:

报错代码

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb.
Did you install mysqlclient or MySQL-python?

解决办法

###在工程目录中的__init__.py中添加如下代码
vim mysite/__init__.py

import pymysql
pymysql.install_as_MySQLdb()

视图view函数

vim polls/views.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.


def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

4、先创建数据库

➜  ~ mysql -uroot -p123456

mysql> create database mysite;
Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on *.* to mysite@"localhost" identified by '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on *.* to mysite@"%" identified by '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> show grants for mysite@"%";
+----------------------------------------------------------------------------------------------------------------+
| Grants for mysite@%                                                                                            |
+----------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'mysite'@'%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
+----------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

5、同步数据操作

#生成数据的脚本
python manage.py makemigrations
No changes detected

#执行同步
#新版django已经取消sycdb命令同步数据库
root># python manage.py migrate
System check identified some issues:

WARNINGS:
?: (mysql.W002) MySQL Strict Mode is not set for database connection 'default'
	HINT: MySQL's Strict Mode fixes many data integrity problems in MySQL, such as data truncation upon insertion, by escalating warnings into errors. It is strongly recommended you activate it. See: https://docs.djangoproject.com/en/1.11/ref/databases/#mysql-sql-mode
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying sessions.0001_initial... OK

6、启动服务

python manage.py runserver 10.118.166.110:5000

7、访问测试

输入图片说明

参考文档:

import MySQLdb与import mysql区别

https://zhidao.baidu.com/question/1834288931305871860.html

© 著作权归作者所有

共有 人打赏支持
翱誽的微笑
粉丝 1
博文 114
码字总数 76587
作品 0
程序员
私信 提问
WEB框架之---Django初级篇

一、下载与安装(Windows版) 下载地址:https://www.djangoproject.com/download/ 或者通过命令:pip install django==1.11.2进行安装(Python3使用pip3)推荐使用此版本 安装完成后找到dja...

AltBoy
2018/06/26
0
0
[Python] 使用Django开发Web框架

Django Web框架简介 Django 项目是一个 python[1]定制框架,它源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。Django 框架的核心组件有: 用于创建模型的对象关系映射 为最终...

长平狐
2013/06/03
1K
0
学习django 的两三点事~~连载 (django admin篇)

前言:这是一堂上外教课之后所总结的课后资料,整个一下午的课时,我觉得不错思路很清晰,老师的中文也相当的有地方方言的味道啊,但是对一些不明白问题的解释和回答有别于国内老师的教学方式...

宁宁123韩
2013/03/12
505
3
Django之基本操作

(linux操作系统下) #一 Django框架的安装与配置 ##1 环境配置 步骤: 1 安装python3 2 pip3.6 install pytz文件 --时间模块 3 pip3.6 install Django文件 4 pip3.6 install PyMySQL文件 --操作...

LinQiH
2017/10/22
0
0
[Python] 使用Django开发Web框架

Django Web框架简介 Django 项目是一个 python[1]定制框架,它源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。Django 框架的核心组件有: 用于创建模型的对象关系映射 为最终...

长平狐
2013/06/03
144
0

没有更多内容

加载失败,请刷新页面

加载更多

dockerfile 镜像构建(1)

通用dockerfile 利用已经编译好的.jar 来构建镜像。要构建的目录如下: [root@iZuf61quxhnlk9m2tkx16cZ demo_jar]# docker build -t demo:1 . 运行镜像: [root@iZuf61quxhnlk9m2tkx16cZ de...

Canaan_
33分钟前
1
0
Redis radix tree源码解析

Redis实现了不定长压缩前缀的radix tree,用在集群模式下存储slot对应的的所有key信息。本文将详述在Redis中如何实现radix tree。 核心数据结构 raxNode是radix tree的核心数据结构,其结构体...

阿里云云栖社区
36分钟前
7
0
vue import 传入变量

在做动态添加component的时候,传入变量就会报错,出现以下错误信息: vue-router.esm.js?fe87:1921 Error: Cannot find module '@/components/index'. at eval (eval at ./src/components ......

朝如青丝暮成雪
38分钟前
1
0
Flutter开发 Dio拦截器实现token验证过期的功能

前言: 之前分享过在Android中使用Retrofit实现token失效刷新的处理方案,现在Flutter项目也有“token验证过期”的需求,所以接下来我简单总结一下在Flutter项目中如何实现自动刷新token并重...

EmilyWu
39分钟前
7
0
final Map可以修改内容,final 常量不能修改

1.final Map 可以put元素,但是不可以重新赋值 如: final Map map = new HashMap(); map = new HashMap();//不可以 因为栈中变量map引用地址不能修改 2.final str = “aa”; str = "bb";/......

qimh
42分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部