准备工作
要是使用django来进行做数据库的交互,需要先下载django的数据库驱动程序
postgresql:
http://initd.org/projects/psycopg1
这些是数据库对应的django驱动下载地址,选择所需要的然后下载安装就行了
postgresql_psycopg2 :, http://initd.org/projects/psycopg2
mysql : http://sourceforge.net/projects/mysql-python
sqlite3: http://initd.org/tracker/pysqlite
ado_mssql : http://adodbapi.sourceforge.net/
配置数据库
驱动安装好之后,我们就可以配置数据库了,打开settings.py,找到DATABASES属性,然后就可以配置了
其中各自代表的属性如下:
ENGINE:
告诉Django使用哪个数据库引擎,如果你使用数据库和Django工作的话,
DATABASE_ENGINE必须是下面的字符串集合:
设置 数据库 需要的适配器
postgresql PostgreSQL psycopg version 1.x, http://initd.org/projects/psycopg1
DATABASE_ENGINE必须是下面的字符串集合:
引用
设置 数据库 需要的适配器
postgresql PostgreSQL psycopg version 1.x, http://initd.org/projects/psycopg1
postgresql_psycopg2 PostgreSQL psycopg version 2.x, http://initd.org/projects/psycopg2
mysql MySQL MySQLdb, http://sourceforge.net/projects/mysql-python
sqlite3 SQLite No adapter needed if using Python 2.5+ Otherwise, pysqlite, http://initd.org/tracker/pysqlite
ado_mssql Microsoft SQL Server adodbapi version 2.0.1+, http://adodbapi.sourceforge.net/
oracle Oracle cx_Oracle, http://www.python.net/crew/atuining/cx_Oracle/
NAME:告诉Django数据库名字是什么,如果你使用SQLite,
指出数据库文件的完整的文件系统路径,如'/home/django/mydata.db'
指出数据库文件的完整的文件系统路径,如'/home/django/mydata.db'
USER:告诉Django你连接数据库的用户名
PASSWORD:告诉Django你连接数据库的密码
HOST:告诉Django你连接数据库的主机,如果你的数据库和Django安装在同一台计算机上,则这项为空
PORT:PORT告诉Django连接数据库的端口
我的是mysql所以我的配置结果如下图:
![](https://img-my.csdn.net/uploads/201303/23/1364052426_3891.png)
然后们可以进入shell里面运行
from django.db import connnection
cursor = connection.cursor()
如果没有错误产生说明我们配置的没有问题如图:
cursor = connection.cursor()
如果没有错误产生说明我们配置的没有问题如图:
![](https://img-my.csdn.net/uploads/201303/23/1364052683_7739.png)
编写模型
好了,上面我们把数据库给配置好了,也能连接上了,那我接下来就开始写模型了,在django里面我们不需要再繁琐的写sql语言来创建数据库
什么的,一切都已经帮我们做好了
app的模型和视图
我们先创建一个app模型和视图吧,如图所示放在book包中
![](https://img-my.csdn.net/uploads/201303/23/1364053180_7279.png)
此中的models即是我们写模型的地方,我们把所要写的模型都写在那个里面
每个模型都是继承django.db.models.Model的
from django.db import models
class Publisher(models.Model):
name = models.CharField(max_length=30)
address = models.CharField(max_length=50)
city = models.CharField(max_length=60)
state_province = models.CharField(max_length=30)
country = models.CharField(max_length=50)
website = models.URLField()
class Author(models.Model):
salutation = models.CharField(max_length=10)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField()
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()
然后我们在settings.py中设置映射,让django为我们生成相应的sql
![](https://img-my.csdn.net/uploads/201303/23/1364053656_5498.png)
好了,现在我们就可以运行python manage.py validate 这个命令来校验一下模型以及配置是否正确了
![](https://img-my.csdn.net/uploads/201303/23/1364053745_7943.png)
ok,一切都是那么完美,那么我们接下来就使用python manage.py sqlall book这个命令来让django给我们生成相应的
sql语句吧
![](https://img-my.csdn.net/uploads/201303/23/1364053827_9282.png)
都生成出来了,我们就不用手动的写这些烦人的sql语句了
然后我们把它提交给数据库
运行:python manage.py syncdb
![](https://img-my.csdn.net/uploads/201303/24/1364054862_8508.png)
赶紧来看看数据库里面新建了表了呢
![](https://img-my.csdn.net/uploads/201303/24/1364054934_1630.png)
哈哈,真的有了,好简单快速呀
有一下几点我们需要注意:
1.表明自动由app名(books)和小写的模型名-publisher,book和author组成
你可以覆盖这个行为
你可以覆盖这个行为
2.Django自动给每个表添加主键id域,你也可以覆盖这点
3.习惯约束上Django会在外键域的名字后面添加“_id”,你已经猜到了,你也可以覆盖这点
4.外键关系由显式的REFERENCES语句来完成
4.外键关系由显式的REFERENCES语句来完成
5.这些CREATE TABLE语句是针对你使用的数据库生成的,所以数据库专有的域类型如
aotu_increment(MySQL),serial(PostgreSQL),或者integer primary key(SQLite)会自动为你处理
aotu_increment(MySQL),serial(PostgreSQL),或者integer primary key(SQLite)会自动为你处理