千与千寻django(四)---django的模型层与数据库的连接

准备工作

要是使用django来进行做数据库的交互,需要先下载django的数据库驱动程序
这些是数据库对应的django驱动下载地址,选择所需要的然后下载安装就行了

配置数据库

驱动安装好之后,我们就可以配置数据库了,打开settings.py,找到DATABASES属性,然后就可以配置了

其中各自代表的属性如下:
ENGINE:
告诉Django使用哪个数据库引擎,如果你使用数据库和Django工作的话,
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'  
USER:告诉Django你连接数据库的用户名
PASSWORD:告诉Django你连接数据库的密码
HOST:告诉Django你连接数据库的主机,如果你的数据库和Django安装在同一台计算机上,则这项为空
PORT:PORT告诉Django连接数据库的端口
我的是mysql所以我的配置结果如下图:

然后们可以进入shell里面运行
from django.db import connnection
cursor = connection.cursor()  

如果没有错误产生说明我们配置的没有问题如图:

编写模型

好了,上面我们把数据库给配置好了,也能连接上了,那我接下来就开始写模型了,在django里面我们不需要再繁琐的写sql语言来创建数据库
什么的,一切都已经帮我们做好了

app的模型和视图 

我们先创建一个app模型和视图吧,如图所示放在book包中


此中的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
好了,现在我们就可以运行python manage.py validate 这个命令来校验一下模型以及配置是否正确了
ok,一切都是那么完美,那么我们接下来就使用python manage.py sqlall book这个命令来让django给我们生成相应的
sql语句吧
都生成出来了,我们就不用手动的写这些烦人的sql语句了
然后我们把它提交给数据库
运行:python manage.py syncdb

赶紧来看看数据库里面新建了表了呢

哈哈,真的有了,好简单快速呀
有一下几点我们需要注意:
1.表明自动由app名(books)和小写的模型名-publisher,book和author组成
你可以覆盖这个行为
2.Django自动给每个表添加主键id域,你也可以覆盖这点
3.习惯约束上Django会在外键域的名字后面添加“_id”,你已经猜到了,你也可以覆盖这点 
4.外键关系由显式的REFERENCES语句来完成
5.这些CREATE TABLE语句是针对你使用的数据库生成的,所以数据库专有的域类型如
aotu_increment(MySQL),serial(PostgreSQL),或者integer primary key(SQLite)会自动为你处理 







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值