Day05 Django模型
1. Django对各种数据库提供了很好的支持,为这些数据库提供了统一调用的API,MySQL是Web 应用中最常用的数据库,接下来以MySql为例进行介绍。
2. 安装mysql驱动 参见https://www.cnblogs.com/hwtmhj/p/6746151.html
1) 下载安装成功Mysql
2) 进入目录D:\Python36下打开命令行输入pip3 install pymysql
3) 以管理员身份打开 CMD窗口,输入net start mysql 启动数据库
4) 接下来用代码实现MySQL和Python的连接:
在setting文件中找到数据库的配置代码,Django工程中。
数据库一般默认的SQLite数据库,如下所示:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'mydatabase',
}
}
修改代码如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'newssystem', ##指定的数据库名
'USER': 'root', ##数据库登陆的用户名,mysql一般是root
'PASSWORD': '', ##我的密码是空
'HOST': '127.0.0.1',## 由于一般的数据库都是C/S结构的,所以得指定数据库服务器的位置,我们一般数据库服务器和客户端都是在一台主机上面,所以一般默认都填127.0.0.1 /localhost
'PORT': '3306', 数据库服务器端口,mysql默认为3306
}
}
5)HOST和PORT都可以不填,使用默认的配置,但是如果你有更改默认配置的话,就需要填入更改后的。
现在需要在配置文件目录下面D:\Python36\Lib\site-packages\Django-1.11.11-py3.6.egg\django\conf的__init__.py 文件中写入连接的代码即可,如下图所示:
import pymysql
pymysql.install_as_MySQLdb()
db=pymysql.connect("localhost","root","","newssystem")
cursor=db.cursor()
cursor.execute("SELECTVERSION()")
data=cursor.fetchone()
print("Databaseversion : %s" % data)
db.close()
6)完成后回到工程下开启Django服务
表示连接成功
3. 定义模型
创建APP
Django规定如果要是使用模型,必须创建一个app
1)
2)修改 TestModel/models.py 文件,代码如下:
# models.py
from django.db importmodels
classTest(models.Model):
name= models.CharField(max_length=20)
以上的类名代表数据库表名,且继承了models.Model
类里边的字段代表数据表中的字段(name)
数据类型则由CharField(Varchar)、DateField(datetime)
max_length 参数限定长度
3)接下来在HelloWorld目录下找到setting.py 找到INSTALLED——APPS
修改代码如下:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'TestModel', # 添加此项
)
5) 在命令行中运行
python manage.py migrate # 创建表结构
python manage.pymakemigrations TestModel # 让 Django 知道我们在我们的模型有一些变更
python manage.py migrate TestModel # 创建表结构
6) 表名组成结构为:应用名_类名(如:TestModel_test)。
7) 打开数据库IDE可发现
注意:尽管我们没有在models给表设置主键,但是Django会自动添加一个id作为主键。
添加数据
1)我们在HelloWorld目录中添加testdb.py文件:
添加数据需要先创建对象,然后再执行save函数,相当于SQL中的INSERT:
# -*-coding:utf-8 -*-
from django.httpimport HttpResponse
from TsetModel.models import Test
#数据库操作
def testdb(request)
test1=Test(name=’runoob’)
test1.save()
returnHttpResponse(“<p>数据添加成功!</p>”)
2) 修改urls.py
fromdjango.conf.urls import *
from. import view,testdb
urlpatterns = [
url(r'^hello$', view.hello),
url(r'^testdb$', testdb.testdb),
]
3)访问http://127.0.0.1:8000/testdb
显示
获取数据
更新数据
删除数据