Django教程-02连接初始化数据库

Django教程-02连接初始化数据库,第1张

Django教程——01安装使用

在上面一篇文章里,介绍了安装Django的方法,这里说说连接数据库

这篇主要介绍踩的坑和解决办法

正常连接和初始化数据库的命令是

执行这个命令的时候,出现了如下报错

经过一段排查,是我配置数据库的时候,多嵌套了一层default,修改为如下即可

然后继续执行migrate时,会报如下错误

本机环境是mac电脑,按官方教程 *** 作的时候,发现安装mysqlclient的python包会依赖本机安装mysql或者mysql-client,但在装mysql和mysql-client的时候,发现一直报错。后面发现解决办法是,在settingspy文件里,加下如下代码,即改用pymsql连接即可。

或者在settingspy同目录的__init__py里加如上代码也可以

然后再执行python managepy migrate命令会发现表顺利创建。新增表,不影响原有库的其他表。

你要看错误提示啊,错误提示明明白白的告诉你了,你混合使用了tab键和空格。你要做的事情很简单,将tab键产生的缩进格式都用空格。你最好都用空格,在linux下你的tab还会死人的

再说清楚点就是将你modelspy里的

body=modelsTextField()

这代码的缩进全换成空格缩进。我想可能还有其它地方也有类似这样的错误,慢慢修正吧

创建数据库

选择开始菜单中→程序→Management SQL Server 2008→SQL Server Management Studio命令,打开SQL Server Management Studio窗口,并使用Windows或 SQL Server身份验证建立连接。

在对象资源管理器窗口中展开服务器,然后选择数据库节点

右键单击数据库节点,从d出来的快捷菜单中选择新建数据库命令。

django登陆页面输错一次提示还剩四次机会。

将所有的静态文件(css,js,前端第三方库)都默认放在static文件夹,并且在settings中配置,复制代码,创建应用python managepy startapp app01,修改配置文件,在应用中的reg中写好注册页面(reghtml)。

连接Django和Mysql数据库,告诉django用pymysql替换它默认mysqldb模块连接数据库,将你的数据库同步到数据库中,在views中配置reg函数,这样就注册成功。

Django是什么:

Django 是用 Python 开发的一个免费开源的 Web 框架,可以用于快速搭建高性能、优雅的网站,Django 提供了许多网站后台开发经常用到的模块,使开发者能够专注于业务部分。

由于创建连接的代价是很高的,

我们每次访问数据库都重新创建连接的话是非常消耗性的

我们可以再程序启动的时候先创建出一些连接,

放在一个集合中,

访问数据库的时候从集合中获取,

使用结束再放回集合中

这样做只是在程序启动的时候消耗性能去

创建mysite目录

django-adminpy startproject mysite这个命令作用是:这将创建在当前目录创建一个mysite目录

前提是从命令行上cd到你想储存你代码的目录,然后生成各种子目录

首先需要注意的是文件目录

这里面的文件大致作用:

books这个 文件夹存放的是新建数据库的各种信息

books/templates这个目录下装的是网页的布局,当然这个网页的布局就是showhtml所提供

books/viewspy定义函数,并且把showhtml引入进去,文件内容如下:

from djangoshortcuts import render,render_to_response

from djangotemplate import loader

from books import models

# Create your views here

def show(request):

# publisher_list = [{'name':"gongye",'city':'beijing'}]

publisher_list = modelsPublisherobjectsall()

return render_to_response('showhtml',{'publisher_list':publisher_list})

12345678910111213

books/modelspy文件存放的是你所创建的数据库,代码如下:

#coding=utf-8

from __future__ import unicode_literals

from djangodb import models

# Create your models here

class Publisher(modelsModel):

name = modelsCharField(max_length = 30)

address = modelsCharField(max_length = 50)

city = modelsCharField(max_length = 60)

state_province = modelsCharField(max_length = 30)

country = modelsCharField(max_length = 50)

website = modelsURLField()

# __unicode__这个函数用来返回某个值可以很好的用于查询和admin界面的显示

def __unicode__(self):

return selfname

class Author(modelsModel):

first_name = modelsCharField(max_length = 30)

last_name = modelsCharField(max_length = 40)

email = modelsEmailField(blank = True,verbose_name = 'e-mail')

def __unicode__(self):

return u'%s %s'%(selffirst_name,selflast_name)

class Book(modelsModel):

title = modelsCharField(max_length = 100)

author = modelsManyToManyField(Author)

publisher = modelsForeignKey(Publisher)

publication_date = modelsDateField(blank = True,null = True)

def __unicode__(self):

return selftitle

123456789101112131415161718192021222324252627282930313233

books下其他的文件就是在创建的过程中自己产生的

website/templates文件里存放的是各种显示的静态网页布局,这么多html文件,只要你在访问测试的时候,端口号后面加上html的文件名字就行比如,我要访问templates/basehtml文件,输入网址:localhost:8000/base就可以

website/settingspy文件是Django的设置文档,里面的INSTALLED_APPS添加多个应用,比如这里面我九添加了books应用,代码如下:

INSTALLED_APPS = [

'djangocontribadmin',

'djangocontribauth',

'djangocontribcontenttypes',

'djangocontribsessions',

'djangocontribmessages',

'djangocontribstaticfiles',

'books',

default属性只在Django的ORM模型中有效,不会真正映射到数据库里。要设置数据表的DEFAULT属性,你可以手动修改makemigrations生成的脚本,或者去修改Django本身。

在db/backends/creationpy中找到如下字段:

if fprimary_key:

field_outputappend(styleSQL_KEYWORD('PRIMARY KEY'))elif funique:

field_outputappend(styleSQL_KEYWORD('UNIQUE'))

在之后加上:

if(fdefault != modelsfieldsNOT_PROVIDED):

field_outputappend(styleSQL_KEYWORD('DEFAULT ' + str(fdefault)))

以上就是关于Django教程-02连接初始化数据库全部的内容,包括:Django教程-02连接初始化数据库、Python3下Django1.10连接数据库报错、关于DJANGO连接数据库和创建模型问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10189464.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存