Pyhton_Django学习笔记(五) 模型与MYSQL数据库使用
2011-07-11 18:23
771 查看
先上简单DEMO 使用MYSQL数据库显示数据
from django.shortcuts import render_to_response
import MySQLdb
def book_list(request):
db = MySQLdb.connect(user='me', db='mydb', passwd='secret', host='localhost')
cursor = db.cursor()
cursor.execute('SELECT name FROM books ORDER BY name')
names = [row[0] for row in cursor.fetchall()]
db.close()
return render_to_response('book_list.html', {'names': names})
Django提供了在配置文件中 settings.py中配置数据库的支持。
例如:在settings.py中编辑:
MANAGERS = ADMINS
DATABASES = {
'default': {
'ENGINE': 'mysql',
'NAME': 'mydb',
'USER': 'me',
'PASSWORD': 'secret',
'HOST': 'localhost',
'PORT': '',
}
}
这样在第一段代码中。可以简化成:
from django.db import connection
cursor = connection.cursor()
cursor.execute('select name from books')
names = [row[0] for row in cursor.fetchall()]
return render_to_response('book_list.html',{'name':names})
===============================================================================
下面来说下,用Django的支持做MYSQL的数据模块创建。
1、CMD项目路径下。执行:python manage.py startapp books
books是创建的模块名称,这条命令在项目下创建了一个books目录。
这个目录下包含创建生成的文件:__init__.py,models.py,tests.py,view.py
2、打开models.py 文件 编辑内容如下:
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):
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()
完成这些代码后,激活这个模型。
3、打开settings.py 文件,定位到 INSTALLED_APPS设置节点。
先注释掉里面的自动生成对象。
并添加代码如下:
INSTALLED_APPS = (
# 'django.contrib.auth',
# 'django.contrib.contenttypes',
# 'django.contrib.sessions',
# 'django.contrib.sites',
'mysite.books',
)
现在我们创建数据库表
先在CMD中验证 model文件数据是否符合标准。 执行:python manage.py validate
如果显示 0 errors found.表示语法OK。
继续执行 python mange.py sqlall books,这个命令式帮助你生成SQL脚本,你可以复制粘贴到数据库执行操作。
还有一个方法 是直接连到数据库,并执行创建表操作。命令:python manage.py syncdb
syncdb命令是同步你得模型到数据库。它根据INSTALLED_APPS里设置的APP来检查数据库,如果表不存在,就创建。
写测试方法:
def createpub(request):
p1 = Publisher(name='Apress',address='2855 Telegraph Avenue',city='Berkeley',state_province='CA',country='U.S.A',website='http://www.sina.com.cn')
p1.save()
p2 = Publisher(name='B World',address='2866 Telegraph Avenue',city='Beijing',state_province='CN',country='HK',website='http://www.qq.com')
p2.save()
pub = Publisher.objects.filter(name='Apress')
return render_to_response('book_list.html',{'name':pub}) 写对应的模板页和URLS配置。
运行 效果如下 [<Publisher: Publisher object>, <Publisher: Publisher object>] 打印出的东西并没有得到我们想要的结果,先来解决这个问题。
修改 models.py 文件内容如下:
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=50)
country = models.CharField(max_length=50)
website = models.URLField()
def __unicode__(self):
return self.name
class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField()
def __unicode__(self):
return u'%s %s' % (self.first_name, self.last_name)
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()
def __unicode__(self):
return self.title 再运行,输出正常。OBJECTS还有很多操作,这个找对应的文档查看更多。
from django.shortcuts import render_to_response
import MySQLdb
def book_list(request):
db = MySQLdb.connect(user='me', db='mydb', passwd='secret', host='localhost')
cursor = db.cursor()
cursor.execute('SELECT name FROM books ORDER BY name')
names = [row[0] for row in cursor.fetchall()]
db.close()
return render_to_response('book_list.html', {'names': names})
Django提供了在配置文件中 settings.py中配置数据库的支持。
例如:在settings.py中编辑:
MANAGERS = ADMINS
DATABASES = {
'default': {
'ENGINE': 'mysql',
'NAME': 'mydb',
'USER': 'me',
'PASSWORD': 'secret',
'HOST': 'localhost',
'PORT': '',
}
}
这样在第一段代码中。可以简化成:
from django.db import connection
cursor = connection.cursor()
cursor.execute('select name from books')
names = [row[0] for row in cursor.fetchall()]
return render_to_response('book_list.html',{'name':names})
===============================================================================
下面来说下,用Django的支持做MYSQL的数据模块创建。
1、CMD项目路径下。执行:python manage.py startapp books
books是创建的模块名称,这条命令在项目下创建了一个books目录。
这个目录下包含创建生成的文件:__init__.py,models.py,tests.py,view.py
2、打开models.py 文件 编辑内容如下:
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):
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()
完成这些代码后,激活这个模型。
3、打开settings.py 文件,定位到 INSTALLED_APPS设置节点。
先注释掉里面的自动生成对象。
并添加代码如下:
INSTALLED_APPS = (
# 'django.contrib.auth',
# 'django.contrib.contenttypes',
# 'django.contrib.sessions',
# 'django.contrib.sites',
'mysite.books',
)
现在我们创建数据库表
先在CMD中验证 model文件数据是否符合标准。 执行:python manage.py validate
如果显示 0 errors found.表示语法OK。
继续执行 python mange.py sqlall books,这个命令式帮助你生成SQL脚本,你可以复制粘贴到数据库执行操作。
还有一个方法 是直接连到数据库,并执行创建表操作。命令:python manage.py syncdb
syncdb命令是同步你得模型到数据库。它根据INSTALLED_APPS里设置的APP来检查数据库,如果表不存在,就创建。
写测试方法:
def createpub(request):
p1 = Publisher(name='Apress',address='2855 Telegraph Avenue',city='Berkeley',state_province='CA',country='U.S.A',website='http://www.sina.com.cn')
p1.save()
p2 = Publisher(name='B World',address='2866 Telegraph Avenue',city='Beijing',state_province='CN',country='HK',website='http://www.qq.com')
p2.save()
pub = Publisher.objects.filter(name='Apress')
return render_to_response('book_list.html',{'name':pub}) 写对应的模板页和URLS配置。
运行 效果如下 [<Publisher: Publisher object>, <Publisher: Publisher object>] 打印出的东西并没有得到我们想要的结果,先来解决这个问题。
修改 models.py 文件内容如下:
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=50)
country = models.CharField(max_length=50)
website = models.URLField()
def __unicode__(self):
return self.name
class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField()
def __unicode__(self):
return u'%s %s' % (self.first_name, self.last_name)
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()
def __unicode__(self):
return self.title 再运行,输出正常。OBJECTS还有很多操作,这个找对应的文档查看更多。
相关文章推荐
- python Django 学习笔记(四)—— 使用MySQL数据库
- Django学习笔记2 模型的使用
- Django学习笔记(二)——django数据库的使用
- Pyhton_Django学习笔记(三) 视图和URL配置
- Python学习笔记 —— mysql数据库使用
- Pyhton_Django学习笔记(一) Django安装 导入项目 运行服务器
- ThinkPHP 学习笔记 3-4.输出和模型使用
- 【深度学习】笔记6:使用caffe中的CIFAR10网络模型和自己的图片数据训练自己的模型(步骤详解)
- django_book学习笔记4-模型
- Django学习笔记9-使用模板
- Django学习笔记之【应用和数据模型】
- Django的学习笔记(三)(Django多对多关系模型)
- Python Web开发 之Django框架入门学习笔记(一)——安装和初步使用
- Django学习笔记(8)--- Signals和GenericForeignKey的使用
- Django学习笔记(7)---多数据库中跨数据库使用多对多
- 【django 学习笔记】04-模型
- Django学习笔记(二)Django使用template
- IOS 开发学习笔记-基础 UI(十)九宫格布局,块动画,字典转模型,Xib使用
- Django学习计划--模型使用