1 概述
1.1 简介
django默认支持sqlite、mysql、oracle、postgresql数据库,像db2和sqlserver之类的数据库需要第三方的支持。具体详见:Django databases官网
sqlite:django默认使用sqlite的数据库,默认自带sqlite的数据库驱动,引擎名称是django.db.backends.sqlite3
mysql:引擎名称是django.db.backends.mysql
1.2 常用的mysql驱动程序库
MySQLdb(mysql-python)(支持python2)
mysqlclient(支持python3)
MySQL Connector/Python
PyMySQL(纯python的mysql驱动) (支持pip安装)
2 演示pymysql的使用
# 1.安装pymysql
pip install pymysql
# 2.修改配置文件【settings.py】
DATABASES = { ### 默认情况下使用的是sqlite3的数据库
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
DATABASES = { ### 改为mysql的数据库
'default': {
'ENGINE': 'django.db.backends.mysql’,
'NAME': 'hello_django_db', ### 数据库名字
'USER':'root', ### 链接mysql数据库的用户名
'PASSWORD':'123456’, ### 连接mysql数据库的密码
#'HOST':'', ### 指定host
#'PORT':'', ### 指定port
}
}
# 3.链接数据库并创建数据库
mysql -uroot -p123456
mysql> CREATE DATABASE IF NOT EXISTS `hello_django_db` DEFAULT CHARACTER SET 'UTF8';
Query OK, 1 row affected (0.00 sec)
# 4. 在工程目录的【__init__.py】增加代码,django默认的是python_mysql的库,所以高改成pymysql
import pymysql
pymysql.install_as_MySQLdb()
# 5.同步一下数据库
(maizi_env) /Users/apple:718$python3 manage.py makemigrations
No changes detected
(maizi_env) /Users/apple:720$python3 manage.py migrate
Operations to perform:
Apply all migrations: contenttypes, admin, auth, sessions
Running migrations:
Rendering model states... DONE
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 sessions.0001_initial... OK