Django ORM------Mysql

Django ORM------Mysql

ORM操作

select * from tb where id > 1

#对应关系

models.tb.objects.filter(id__gt=1)

models.tb.objects.filter(id=1)

models.tb.objects.filter(id__lt=1)

创建类

1.DB-first:根据类自动创建数据库表

    #models.py

settings.py中要注册app

 默认生成的表名为:#app01_userinfo 

from django.db import models
#create your models here.
class UserInfo(models.Model):
    #django会默认创建一个id列,自增,主键
    #用户名列,字符串类型,指定长度
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=64)


项目的settings->INSTALLED_APPS=[]中,添加app,如图:


然后命令行执行:
python manage.py makemigrations
python manage.py migrate #根据生成的py文件,直接生成数据库
View Code

项目settings.py->DATABASE={}中设置使用的数据库:默认连接sqlite

连接mysql配置文件:

DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME':'dbname',
    'USER': 'root',
    'PASSWORD': 'xxx',
    'HOST': '',
    'PORT': '',
    }
}
View Code

***********注意***********

Django默认用Mysqldb模块连接mysql,所以会报错,应该修改为pymysql连接

在项目的__init__.py文件中,添加:
import pymysql
pymysql.install_as_MySQLdb()

 models.py中增、删、改、查sqlite:

1.增

from django.db import models
class UserInfo(models.Model):
    #id列、自增、主键
    #用户名列,字符串类型,指定长度
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=64)
models.py
from app01 import models
def orm(request): 
    models.UserInfo.objects.create(               #往表中插入数据
        username = 'root'
        password = ‘123’
    )

    return HttpResponse('orm')

创建数据的第二种方法
def orm(request):
 
        obj = models.UserInfo(username = 'alex',  password = ‘123’)
     
        obj.save()         #往表中插入数据
       
    return HttpResponse('orm')

第三种方法:
def orm(request): 
    dic={'username':'Eric','password':'666'}
    models.UserInfo.objects.create(**dic)         #往表中插入数据
    

    return HttpResponse('orm')
View Code

2.查

result = models.UserInfo.objects.all() #返回表里的所有数据

print(result) #result为QuerySet类型,由django生成,即列表

for row in result:
    print(row.id,row.username,row.password)

或者:

result =  models.UserInfo.objects.filter(username='root')
查询

3.删除

models.UserInfo.objects.all().delete() #删除所有
models.UserInfo.objects.filger(id=4).delete() #删除id为4的记录
View Code

4.更新

models.UserInfo.objects.all().update(password='6669')
models.UserInfo.objects.filter(id=3).update(password='69')
更新

 

 

 2.Code-first:根据类对数据库表中的数据进行各种操作

一、概述

1、什么是数据库 ?

 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库

2、什么是 MySQL、Oracle、SQLite、Access、MS SQL Server等 ?
 答:他们均是一个软件,都有两个主要的功能:

  • a. 将数据保存到文件或内存
  • b. 接收特定的命令,然后对文件进行相应的操作

    PS:如果有了以上软件,无须自己再去创建文件和文件夹,而是直接传递 命令 给上述软件,让其来进行文件操作,他们统称为数据库管理系统(DBMS,Database Management System)

3、什么是SQL ?
 答:上述提到MySQL等软件可以接受命令,并做出相应的操作,由于命令中可以包含删除文件、获取文件内容等众多操作,对于编写的命令就是是SQL语句。SQL????,是??????????????结构化语言(Structured Query Language????)的缩写,SQL????????????????是一种专门用来与数据库通信的语言。

二、下载安装

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

想要使用MySQL来存储并操作数据,则需要做几件事情:
  a. 安装MySQL服务端
  b. 安装MySQL客户端
  b. 【客户端】连接【服务端】
  c. 【客户端】发送命令给【服务端MySQL】服务的接受命令并执行相应操作(增删改查等)

下载
        http://dev.mysql.com/downloads/mysql/
安装
        windows:
            点点点
        Linux:
            yum install mysql-server
        Mac:
            点点点

Window版本

1、下载

MySQL Community Server 5.7.16
 
http://dev.mysql.com/downloads/mysql/
View Code

2、解压

如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录,如:C:\mysql-5.7.16-winx64

3、初始化

MySQL解压后的 bin 目录下有一大堆的可执行文件,执行如下命令初始化数据:

cd c:\mysql-5.7.16-winx64\bin
 
mysqld --initialize-insecure
View Code

4、启动MySQL服务

执行命令从而启动MySQL服务

# 进入可执行文件目录
cd c:\mysql-5.7.16-winx64\bin
 
# 启动MySQL服务
mysqld
View Code

5、启动MySQL客户端并连接MySQL服务

由于初始化时使用的【mysqld --initialize-insecure】命令,其默认未给root账户设置密码

# 进入可执行文件目录
cd c:\mysql-5.7.16-winx64\bin
 
# 连接MySQL服务器
mysql -u root -p
 
# 提示请输入密码,直接回车

输入回车,见下图表示安装成功:

到此为止,MySQL服务端已经安装成功并且客户端已经可以连接上,以后再操作MySQL时,只需要重复上述4、5步骤即可。但是,在4、5步骤中重复的进入可执行文件目录比较繁琐,如想日后操作简便,可以做如下操作。

a. 添加环境变量

将MySQL可执行文件添加到环境变量中,从而执行执行命令即可

【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【将MySQL的bin目录路径追加到变值值中,用 ; 分割】
 
如:
C:\Program Files (x86)\Parallels\Parallels Tools\Applications;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Python27;C:\Python35;C:\mysql-5.7.16-winx64\bin

如此一来,以后再启动服务并连接时,仅需:

# 启动MySQL服务,在终端输入
mysqld
 
# 连接MySQL服务,在终端输入:
mysql -u root -p

b. 将MySQL服务制作成windows服务

上一步解决了一些问题,但不够彻底,因为在执行【mysqd】启动MySQL服务器时,当前终端会被hang住,那么做一下设置即可解决此问题:

# 制作MySQL的Windows服务,在终端执行此命令:
"c:\mysql-5.7.16-winx64\bin\mysqld" --install
 
# 移除MySQL的Windows服务,在终端执行此命令:
"c:\mysql-5.7.16-winx64\bin\mysqld" --remove

注册成服务之后,以后再启动和关闭MySQL服务时,仅需执行如下命令:

# 启动MySQL服务
net start mysql
 
# 关闭MySQL服务
net stop mysql

Linux版本

安装:

1
yum install mysql - server  

服务端启动

1
mysql.server start

客户端连接

1
2
3
4
5
6
7
连接:
     mysql -h host -u  user  -p
 
     常见错误:
         ERROR 2002 (HY000): Can 't connect to local MySQL server through socket ' /tmp/mysql.sock' (2), it means that the MySQL server daemon (Unix)  or  service (Windows)  is  not  running.
退出:
     QUIT 或者 Control+D

三、数据库操作

1、显示数据库

1
SHOW DATABASES;

默认数据库:
  mysql - 用户权限相关数据
  test - 用于用户测试数据
  information_schema - MySQL本身架构相关数据

2、创建数据库

1
2
3
4
5
# utf-8
CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
 
# gbk
CREATE DATABASE 数据库名称 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

3、使用数据库

1
USE db_name;

显示当前使用的数据库中所有表:SHOW TABLES;

4、用户管理

1
2
3
4
5
6
7
8
9
10
创建用户
     create user  '用户名' @ 'IP地址'  identified by  '密码' ;
删除用户
     drop user  '用户名' @ 'IP地址' ;
修改用户
     rename user  '用户名' @ 'IP地址' ; to  '新用户名' @ 'IP地址' ;;
修改密码
     set password  for  '用户名' @ 'IP地址'  = Password( '新密码' )
  
PS:用户权限相关数据保存在mysql数据库的user表中,所以也可以直接对其进行操作(不建议)

5、授权管理

1
2
3
show grants  for  '用户' @ 'IP地址'                   -- 查看权限
grant  权限 on 数据库.表 to    '用户' @ 'IP地址'       -- 授权
revoke 权限 on 数据库.表 from  '用户' @ 'IP地址'       -- 取消权限

  

 

  

posted @ 2017-07-30 11:27 ld1977 阅读( ...) 评论( ...) 编辑 收藏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值