orm连接数据库查询
一、登录功能,连接mysql
1、路由
url(r'^login', views2.login),
url(r'^index', views2.index),
url(r'^test', views.test),
2、视图函数
from django.shortcuts import render, redirect, HttpResponse
import pymysql
# Create your views here.
def index(request):
return render(request, 'index.html')
def login(request):
if request.method == 'GET':
return render(request, 'login.html')
else:
name = request.POST.get('username')
password = request.POST.get('pwd')
# 创建一个数据库链接
conn = pymysql.connect(host='127.0.0.1', user='root', password='111', database='userinfo', port=3306, )
cursor = conn.cursor()
# 执行sql
cursor.execute('select * from user where username=%s and pwd=%s', (name, password))
ret = cursor.fetchone()
print(ret)
if ret:
return redirect('/index')
else:
return HttpResponse('用户名或者密码错误')
3、模板文件login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="/static/bootstrap/css/bootstrap.css">
<script src="/static/js/jquery.min.js"></script>
<title>首页</title>
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
aria-expanded="false" aria-controls="navbar">
<span class="sr-only">导航</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Project name</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<form class="navbar-form navbar-right">
<div class="form-group">
<input type="text" placeholder="Email" class="form-control">
</div>
<div class="form-group">
<input type="password" placeholder="Password" class="form-control">
</div>
<button type="submit" class="btn btn-success">Sign in</button>
</form>
</div>
</div>
</nav>
<div class="jumbotron">
<div class="container">
<h1>cc</h1>
<p>同城交友</p>
<p><a class="btn btn-primary btn-lg" href="#" role="button">点击加我微信</a></p>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-4">
<h2>Heading</h2>
<p>床前明月光</p>
<p><a class="btn btn-default" href="#" role="button">View details »</a></p>
</div>
<div class="col-md-4">
<h2>Heading</h2>
<p>疑是地上霜</p>
<p><a class="btn btn-default" href="#" role="button">View details »</a></p>
</div>
<div class="col-md-4">
<h2>Heading</h2>
<p>一行白鹭突然上青天</p>
<p><a class="btn btn-default" href="#" role="button">View details »</a></p>
</div>
</div>
<hr>
<footer>
<p>© 2016 Company, Inc.</p>
</footer>
</div>
</body>
</html>
二、ORM概述
1、orm:对象关系映射(跟语言无关)
数据库中的表-----》对应程序的一个类
数据库的一行数据--》对应程序的一个对象
2、python中常见的orm框架
-django的orm框架
-sqlachemy orm框架
3、orm的作用:
- 创建表(不能创建数据库,需要手动创建数据库)
- 增加、删除表内字段
- 增删改查数据
4、拓展
java中写项目
ssh框架:spring+struts(有漏洞)+hibernate(orm框架) (我的那个年代)
ssm框架:spring+springmvc+mybatis(orm框架,可以写原生sql)
springboot:sb框架 ,tomcat内置进去了
springcloud:微服务
三、pycharm连接sqlite/mysql
四、django中orm的使用
1、sqlite:也是一个数据库,文件数据库,一个库就是一个文件,不需要单独安装
- 要用关系型数据库,不想装mysql就可以使用sqlite
- 移动开发本地存储数据,存在sqlite中
2、创建一个userinfo表,在models中国写一个类
3、表中有字段(类属性),字段有属性
1、创建表、新增删除子段的步骤:
(1)第一步,在models中写一个类
from django.db import models
class userInfo(models.Model):
# 该字段自增,并且是主键
id = models.AutoField(primary_key=True)
# 该字段是varchar类型,长度为32(唯一约束,是否是索引,默认值是,是否可以为空)
name=models.CharField(max_length=32)
# 密码字段
password = models.CharField(max_length=64)
(2)第二步,把表创建出来(执行两个命令)
- python3 manage.py makemigrations # 这条命令会在migrations创建一条记录(数据库变更记录)
- python3 manage.py migrate # 把更改的数据同步到数据库(真正的数据迁移)
2、插入数据(以userInfo表为例)
方式一:(手动保存到数据库)
user = UserInfo(name=cc,age=20)
user.save()
方式二:(创建对象并保存到数据库)
user=userInfo.objects.create(name=cc,age=20)
3、orm查询表内所有数据:
userInfo.objects.all() # 放在了列表中[user1,user2,user3,...]