唉,最近赶了个新潮,用起了Python3.4跟Django1.6,数据库依然是互联网企业常见的MySql。
悲催的是在Python2.7时代连接MySql的MySQLdb还不支持Python3.4,还好,苦苦追问G哥终于找到一款代替品,而且效果不错,这代替品就是:pymysql。
下载此物然后进行安装,跟其它python第三包没任何区别,一样的安装。
关于Django1.6中DATABASES的设置也是一样不用做任何修改,跟以前MySQLdb的时候一样,如下所示:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #数据库引擎
'NAME': 'test', #数据库名
'USER': 'root', #用户名
'PASSWORD': 'root', #密码
'HOST': '', #数据库主机,默认为localhost
'PORT': '', #数据库端口,MySQL默认为3306
'OPTIONS': {
'autocommit': True,
},
}
}
最关键的一点,在站点的_init_.py文件中,我们添加如下代码:
import pymysql
pymysql.install_as_MySQLdb()
做完上述动作后,即可在django中访问mysql了。
==================================================
环境:Python 3.5+, Django 1.9+
最初用django时,搜索时发现PyMySQL的文章很多,然而在django的官方文档中python3版的mysql客户端驱动确没有提到PyMySQL,只提到了mysqlclient,再细看下去发现:
两个库的作者是同一个人INADA Naoki, pip库邮箱都指向mailto:songofacandy@gmail.com
PyMySQL的代码人员methane说mysqlclient速度更快及PyMySQL的应用场景,参见:https://github.com/PyMySQL/PyMySQL/issues/342
mysqlclient-python is much faster than PyMySQL.
When to use PyMySQL is:
You can’t use libmysqlclient for some reason
You want to use monkeypatched socket of gevent or eventlet
You wan’t to hack mysql protocol
3. Django1.9.12官方文档中:
Django requires mysqlclient 1.3.3 or later. Note that Python 3.2 is not supported. Except for the Python 3.3+ support,
mysqlclient should mostly behave the same as MySQLDB.
经上对比,准备先用mysqlclient!
–10+年电商技术,5年跨境运营。技术+商业思维+资源分享交流,选择比努力更重要!
==================================================================
再来一个:::
创建数据库
create database haha default charset=utf8;
安装pymysql
pip install PyMySQL
应用中的setting.py设置如下
import pymysql ##setting.py设置
pymysql.install_as_MySQLdb() ##setting.py设置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mysite',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
在C:\Users\Administrator\AppData\Local\Programs\Python\Python35\lib\site-packages\django\db\backends\mysql\base.py把下面的内容注释掉
if version < (1, 3, 3):
raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)
创建模型
from django.db import models
class Post(models.Model):
title = models.CharField('标题', max_length=70)
def __str__(self):
return self.title
迁移模型
python manage.py makemigrations
python manage.py migrate
===================================================================
这是一个简单的流程,建立一个项目,新建一个app,同步到数据库中:::
::
django 连接mysql 数据库
1、新建一个mysite项目:django-admin startproject mysite
2、进入项目目录,新建一个app : python manage.py startapp polls
3、安装mysqlclient :pip install mysqlclient
4、在settings.py database中设置数据库连接配置
DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.mysql’,
‘NAME’: ‘my_web’,
‘USER’: ‘root’,
‘PASSWORD’: ‘password’,
‘HOST’: ‘127.0.0.1’,
‘PORT’: ‘3306’,
}
}
5、执行命令: python manage.py migrate
在数据库中自动创建web系统使用到的表
6、编辑polls/models.py文件内容
复制代码
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField(‘date published’)
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
复制代码
7、修改mysite/settings.py 文件INSTALLED_APPS 添加 ‘polls.apps.PollsConfig’,
INSTALLED_APPS = [
‘polls.apps.PollsConfig’,
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
]
7、执行命令:python manage.py makemigrations polls
Migrations for ‘polls’:
polls/migrations/0001_initial.py:
- Create model Choice
- Create model Question
- Add field question to choice
8、执行命令:python manage.py sqlmigrate polls 0001
9 再执行python manage.py migrate 命令,创建数据库表