Python网络编程05----django与数据库的交互

介绍

Django为多种数据库后台提供了统一的调用API,在Django的帮助下,我们不用直接编写SQL语句。Django将关系型的表(table)转换成为一个类(class)。而每个记录(record)是该类下的一个对象(object)。我们可以使用基于对象的方法,来操纵关系型数据库。

设置数据库

设置数据库需要修改settings.py文件

如果使用的数据库是mysql:

[python] view
plain
copy

  1. DATABASES = {
  2. ‘default‘: {
  3. ‘ENGINE‘ :  "django.db.backends.mysql"
  4. ‘NAME‘ : "djangodb"
  5. ‘HOST‘ : "localhost"
  6. ‘USER‘ : "root"
  7. ‘PASSWORD‘ : "123456" #
  8. }
  9. }

PORT如果不设置,会使用默认端口3306

如果没有安装mysql,你也可以使用sqlite。SQLite非常适合测试,甚至可以部署在没有大量并发写入的情况下。

由于SQLite使用的本地文件系统作为存储介质并且用原生的文件系统权限来做访问控制,像主机、端口、用户、密码这种信息统统不需要

只需要输入如下信息:

[python] view
plain
copy

  1. DATABASES = {
  2. ‘default‘: {
  3. ‘NAME‘: r‘C:\mysite\db\test.db‘,              #db目录需要自己创建
  4. ‘ENGINE‘: ‘django.db.backends.sqlite3‘,
  5. }
  6. }

设计Model

在传统的关系型数据库中,数据模型是表。在Django下,一个表为一个类。表的每一列是该类的一个属性。在models.py中,我们创建一个只有一列的表,即只有一个属性的类:

from django.db import models

class Test(models.Model):                         #用于定义数据模型的类
    name = models.CharField(max_length=100)       #name列,数据类型为char,长度为100
    def __unicode__(self):
        return self.name

命令Django同步数据库。Django根据models.py中描述的数据模型,在MySQL中真正的创建各个关系表:$python manage.py syncdb

设置View

事先向数据库中插入两条数据

下面我们从数据库中取出数据,并返回给http请求。在blog/views.py中,添加视图。对于对应的请求,我们将从数据库中读取所有的记录,然后返回给客户端:

# -*- coding: utf-8 -*-
from django.http import HttpResponse

from blog.models import Test

def outStr(request):
    blog_list = Test.objects.all()
    blog_str  = map(str, blog_list)
    return HttpResponse("<p>" + ' '.join(blog_str) + "</p>")

为了让http请求能找到上面的程序,在blog/urls.py增加url链接:

from django.conf.urls import patterns, include, url

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'myweb.views.home', name='home'),
    url(r'^$', 'blog.views.outStr'),
)

输入python manage.py runserver运行服务器

访问127.0.0.1:8000/blog

上一讲:Python网络编程04----初识Django

下一讲:

如果有什么疑问欢迎到我的微信公众号提问~

时间: 2024-10-07 12:34:06

Python网络编程05----django与数据库的交互的相关文章

Python网络编程06----django数据库的增删改查

首先定义model如下. class UserInfo(models.Model): username=models.CharField(max_length=50,null=True,primary_key=False,db_index=True) #可以为空,不是主键,创建索引 password=models.CharField(max_length=50,error_messages={"invalid":"出错"}) #定义出错信息 gender=model

Python网络编程08----Django模版

模板系统基本知识 模板是一个文本文件(可以是HTML,XML,CSV等任何文本格式),同时包含了静态内容(例如HTML)和动态标记的逻辑,用于分离文档的表现形式和内容. 模板定义了占位符以及各种用于规范文档该如何显示的各部分基本逻辑(模板标签). 模板通常用于产生HTML,但是Django的模板也能产生任何基于文本格式的文档.使用哪个模版以及渲染什么数据是由视图函数本身(通过显式的渲染或者使用render_to_response)或者视图的参数(比如通用视图里的template_name参数)决

[python] 网络编程之套接字Socket、TCP和UDP通信实例

很早以前研究过C#和C++的网络通信,参考我的文章: C#网络编程之Tcp实现客户端和服务器聊天 C#网络编程之套接字编程基础知识 C#网络编程之使用Socket类Send.Receive方法的同步通讯 Python网络编程也类似.同时最近找工作笔试面试考察Socket套接字.TCP\UDP区别比较多,所以这篇文章主要精简了<Python核心编程(第二版)>第16章内容.内容包括:服务器和客户端架构.套接字Socket.TCP\UDP通信实例和常见笔试考题. 最后希望文章对你有所帮助,如果有不

python 网络编程(五)---DNS域名系统

1.域名系统定义 DNS计算机域名系统由域名服务器和域名解析器组成.通常输入的是网址就是一个域名. 2.域名查询 查询方式包括: 1)正向查询:由域名查找对应的IP(如:119.75.218.77">www.baidu.com->119.75.218.77 ) 2)反向查询:由IP查找域名(如:119.75.218.77 –> www.baidu.com) 查询方式包括: 1)递归查询:当DNS服务器接收到客户端的查询请求时,会做出相应的反应(本地DNS服务器查询.其他服务器查

python 网络编程要点

From http://www.zhihu.com/question/19854853 Python网络编程是一个很大的范畴,个人感觉需要掌握的点有:1. 如何使用Python来创建socket, 如何将socket与指定的IP地址和端口进行绑定,使用socket来发送数据,接受数据,2. 如何使用Python中处理线程,从而编写可以同时处理多个请求的web服务器3. 如何使用Python来控制HTTP层的逻辑,包括如何创建http GET,POST,PUT,DELETE请求,如何处理接受到的H

PYTHON网络编程基础 pdf扫描版高清下载

PYTHON网络编程基础 pdf,本书全面介绍了使用PYTHON进行网络编程的基础知识,高级网络操作.WebServices.解析HTML和XHTML.XML.FTP.使用PYTHON操作数据库.SSL.几种服务器端框架,以及多任务处理等,实用性比较强,书中提供了175个实例,6600行以上的代码. 目录 第1部分 底层网络 第1章 客户/服务器网络介绍 第2章 网络客户端 第3章 网络服务器 第4章 域名系统 第5章 域名系统 第2部分 Web Service 第6章 Web客户端访问 第7章

python 网络编程 (二)---tcp

异常 python的socket模块实际上定义了4种可能出现的异常: 1)与一般I/O 和通信问题有关的socket.error; 2)与查询地址信息有关的socket.gaierror; 3)与其他地址错误有关的socket.herror; 4)与在一个socket上调用settimeout()后,处理超时有关的socket.timeout; import socket, sys, time host = sys.argv[1] textport = sys.argv[2] filename

[Python网络编程] DNS缓存解决方案

记得以前写爬虫的时候为了防止dns多次查询,是直接修改/etc/hosts文件的,最近看到一个优美的解决方案,修改后记录如下: import socket _dnscache={} def _setDNSCache(): """ Makes a cached version of socket._getaddrinfo to avoid subsequent DNS requests. """ def _getaddrinfo(*args, **

Python 网络编程

Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法. 高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发. 什么是 Socket? Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯. socket()函数 Pyt