在Web程序中难免要与数据库打交道,django目前支持四种数据库
1、
PostgreSQL
需要安装psycopg
2、
SQLite 3 SQLite3是一个本地数据库,类似于access,可以使用SQLite-manager来管理。
在Django下面使用SQLite需要安装pysqllite,点击这里直接下载pysqlite-2.4.1.win32-py2.5.exe
[/td]
3、MySQL
版本为1.2.1p2或者更高的MySQL需要安装MySQLdb,
4、Oracle
版本为 4.3.1 或者更高的Oracle需要安装cx_Oracle
对于SQL Server的数据库引擎支持工作尚未完成
本文已最简单的SqlLite为例进行介绍,希望能起到抛砖引玉的效果.
1、 数据库的配置
根据上一章创建一个名为myblog的项目
打开根目录下的
settings.py文件,编辑如下配置:
DATABASE_ENGINE = 'sqlite3' # 数据库引擎
DATABASE_NAME = './db/blog.sqlite' # 数据库名字,若是sqlite,则制定数据库文件路径
DATABASE_USER = '' # 用户名,sqlite为空
DATABASE_PASSWORD = '' # 密码,sqlite为空
DATABASE_HOST = '' # 数据库服务器地址,sqlite为空
DATABASE_PORT = '' # 端口,sqlite为空
数据库引擎设置设置数据库适配器postgresqlPostgreSQLpsycopg 版本 1.x, http://www.djangoproject.com/r/python-pgsql/1/.postgresql_psycopg2PostgreSQLpsycopg 版本 2.x, http://www.djangoproject.com/r/python-pgsql/.mysqlMySQLMySQLdb , http://www.djangoproject.com/r/python-mysql/.sqlite3SQLitePython 2.5+ 内建。 其他, pysqlite , http://www.djangoproject.com/r/python-sqlite/.ado_mssqlMicrosoft SQL Serveradodbapi 版本 2.0.1+, http://www.djangoproject.com/r/python-ado/.oracleOraclecx_Oracle , http://www.djangoproject.com/r/python-oracle/.
2、创建model
在根目录下创建mvc文件夹,在mvc下分别创建models.py, __init__.py文件
django把每个具有
__init__.py文件的文件夹看成一个命名空间,在根目录下需要添加他的引用,在
setting.py找到
Code
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin', #先加上这个,后面创建网站后台管理要用
'myblog.mvc', #在这儿加上mvc的引用
)
model.py的代码:
Code
# -*- coding: utf-8 -*-
#import time
from django.db import models
from django.contrib import admin
# Create your models here.
_list_per_page = 50
# Article
class Article(models.Model):
id = models.AutoField(
primary_key = True,
core = True,
)
title = models.CharField(
max_length = 50,
)
summanry = models.TextField(
blank = True,
null = True,
)
content = models.TextField()
addtime = models.DateTimeField(
auto_now_add = True,
core = True,
)
def addtime_format(self):
return self.addtime.strftime('%Y-%m-%d %H:%M:%S')
def __unicode__(self):
return self.title
class ArticleAdmin(admin.ModelAdmin):
list_display = ('id','title','addtime_format')
list_display_links = ('id','title')
_list_per_page = _list_per_page
class Reply(models.Model):
id = models.AutoField(
primary_key = True,
core = True,
)
title = models.CharField(
max_length = 50,
)
author = models.CharField(
max_length = 10,
)
email = models.EmailField()
homepage = models.URLField()
article = models.ForeignKey(Article) #创建外键
addtime = models.DateTimeField(
auto_now_add = True,
)
content = models.TextField()
def addtime_format(self):
return self.addtime.strftime('%Y-%m-%d %H:%M:%S') #格式化时间的方法
def __unicode__(self):
return self.title #每个类型都应该由一个__unicode__方法,类似于.net中的 objectA.ToString()显示出来的东西
class ReplyAdmin(admin.ModelAdmin):
list_display = ('id','title','author','email','homepage','article','addtime_format') #列表显示的字段
list_display_links = ('id','title') #列表中可点击进入编辑的链接字段
ordering = ["-addtime"] #排序
search_fields = ('title','author') #可搜索的字段
list_filter = ('email',) #过滤条件
_list_per_page = _list_per_page
#分别给Article,Reply类注册使他们可以在后台管理
admin.site.register(Article,ArticleAdmin)
admin.site.register(Reply,ReplyAdmin)
好了,model都创建好了,下面生成数据库
3、生成数据库
打开命令行,进入项目所在的文件夹输入
manage.py syncdb ,它会提示你
You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no):
大概的意思是是否创建django自带的网站后台管理程序的数据库,选择yes, 然后根据提示设置好用用户名和密码等
该操作后你可以在配置的数据库文件夹下看到生成的数据库
4、测试数据连接
运行命令行 python manage.py shell
输入下面这些命令来测试你的数据库配置:
>>> from django.db import connection
>>> cursor = connection.cursor()
如果没有显示什么错误信息,那么你的数据库配置是正确的