Django基础(二)Django配置信息——数据库配置
数据库配置
1、mysqlclient连接mysql
Django提供4种数据库引擎
django.db.backends.postgresql
django.db.backends.mysql
django.db.backends.sqlite3
django.db.backends.oracle
下载mysqlclient,版本要和Python版本相匹配
https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient
安装pip install E:\1203\mysqlclient-1.4.6-cp39-cp39-win_amd64.whl
在settings.py中配置MySQL数据库连接信息,
# 数据库配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql',#选择的数据库引擎mysql 'NAME': 'django_db', # 创建默认Sqlite3,轻型数据库,用于切入式系统开发,占用资源少 'USER':'root', 'PASSWORD':'1234', 'HOST':'127.0.0.1', 'PORT':'3306', } }
新建一个数据库
创建Django内置功能(如Admin后台系统、Auth用户系统和会话机制等功能)的数据表:python manage.py migrate将内置的迁移文件生成数据表
就可以看到在数据库中已经生成相应的表了
注意Django对应的mysqlclient的版本要求,
如果发现mysqlclient版本过低,可以将if条件判断注释。
2、pymysql连接MySQL
pip install pymysql
settings.py数据库配置不用改,在MyDjango文件夹中的__init__.py中设置数据库连接模块即可。
import pymysql pymysql.install_as_MySQLdb() # 设置数据库连接模块
3、多个数据库的连接方式
# 数据库配置 DATABASES = { # 第一个数据库,default是默认的数据库不可删除,可留空{} 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'django_db', 'USER':'root', 'PASSWORD':'1234', 'HOST':'127.0.0.1', 'PORT':'3306', }, # 第二个数据库 'MyDjango': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mydjango_db', 'USER': 'root', 'PASSWORD': '1234', 'HOST': '127.0.0.1', 'PORT': '3306', }, # 第三个数据库 'MySqlite3': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR/'django_db', # BASE_DIR,数据库在项目路径下生成 }, }
4、使用配置文件动态连接数据库
在MyDjango目录下创建配置文件my.cnf,写入MySOL数据库的连接信息。
[client]客户端设置,即客户端默认的连接参数
[client] database=django_db user=root password=1234 host=127.0.0.1 port=3306
在settings.py写配置信息。default--OPTIONS--read_default_file中设置配置文件my.cnf的路径,Django读取配置文件my.cnf的数据库连接信息,连接数据库。
# 数据库配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'OPTIONS': {'read_default_file':str(BASE_DIR / 'my.cnf')}, }, }
在MyDjango的urls.py中设置路由index,路由的视图函数indexView()在项目应用index的view.py中定义。
from django.urls import path from django.contrib import admin from index.views import index # 导入项目应用index # 项目的urls文件 urlpatterns = [ path('admin/', admin.site.urls), path('',index,name='index'), ]
在项目应用index的view.py中定义路由index的视图函数indexView()。
indexView()读取并输出Django内置函数ContentType的数据,请求响应的内容为templates文件夹的app_index.html
from django.shortcuts import render from django.contrib.contenttypes.models import ContentType def indexView(request): c=ContentType.objects.values_list().all() print(c) return render(request,'app_index.html')
app_index.html
"en"> "UTF-8">Hello Hello World!!
python manage.py migrate
python manage.py runserver 8001
5、通过SSH隧道远程连接MySQL
先在SSH栏设置,然后在常规栏设置。
pip install sshtunnel
下载sshtunnel,通过SSH方式连接到目标服务器,生成服务器的SSH连接对象,在settings.py文件的DATABASES中设置数据库连接
# ssh_:实现SSH连接目标服务器,在sshtunnel模块中使用 # 数据库服务器的ip地址或主机名 ssh_host = "192.168.xx.xx" # 数据库服务器的SSH连接端口号,一般都是22,必须是数字 ssh_port = 22 # 数据库服务器的用户名 ssh_user = "root" # 数据库服务器的用户密码 ssh_password = "1234" # mysql_:在目标服务器基础上连接MySQL数据库,在配置属性DATABASES和sshtunnel模块中均被使用 # 数据库服务器的mysql的主机名或ip地址 mysql_host = "localhost" # 数据库服务器的mysql的端口,默认为3306,必须是数字 mysql_port = 6603 # 数据库服务器的mysql的用户名 mysql_user = "root" # 数据库服务器的mysql的密码 mysql_password = "1234" # 数据库服务器的mysql的数据库名 mysql_db = "mydjango" # 分别定义服务器的SSH连接信息和数据库的连接信息 # 定义服务器的SSH连接函数get_ssh(),使用sshtunnel模块的open_tunnel函数实现,并设置相应的函数参数 from sshtunnel import open_tunnel def get_ssh(): server = open_tunnel( (ssh_host, ssh_port), ssh_username=ssh_user, ssh_password=ssh_password, # 绑定服务器的MySQL数据库 remote_bind_address=(mysql_host, mysql_port))#remote_bind_address是绑定服务器的MySQL数据库 # ssh通道服务启动 server.start() return str(server.local_bind_port) # 在DATABASES的PORT中调用get_ssh(),Django就会连接到服务器的MySQL数据库 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': mysql_db, 'USER': mysql_user, 'PASSWORD': mysql_password, 'HOST': mysql_host, 'PORT': get_ssh(), } }