Python 和 Django 在WIN8下连接数据库

Python 和 Django 在WIN8下连接数据库,第1张

settingpy:都要配置下

USER, PASSWORD, HOST

MySQL插件 :MySQL-python version 121p2 or higher

ENGINE :djangodbbackendsmysql

NAME:你的数据库名字

PostgreSQL插件:postgresql_psycopg2  地址>

ENGINE :djangodbbackendspostgresql_psycopg2

NAME:你的数据库名字

例如我的oracle配置:

先让我们回忆一下在第五章里的关于书本(book)的数据模型:

1

from djangodb import models

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()

def __unicode__(self):

return selfname

class Author(modelsModel):

first_name = modelsCharField(max_length=30)

last_name = modelsCharField(max_length=40)

email = modelsEmailField()

def __unicode__(self):

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

class Book(modelsModel):

title = modelsCharField(max_length=100)

authors = modelsManyToManyField(Author)

publisher = modelsForeignKey(Publisher)

publication_date = modelsDateField()

def __unicode__(self):

return selftitle

如我们在第5章的讲解,获取数据库对象的特定字段的值只需直接使用属性。 例如,要确定ID为50的书本的标题,我们这样做:

>>> from mysitebooksmodels import Book

>>> b = Bookobjectsget(id=50)

>>> btitle

u'The Django Book'

但是,在之前有一件我们没提及到的是表现为ForeignKey 或 ManyToManyField的关联对象字段,它们的作用稍有不同。

访问外键(Foreign Key)值

当你获取一个ForeignKey 字段时,你会得到相关的数据模型对象。 例如:

>>> b = Bookobjectsget(id=50)

>>> bpublisher

<Publisher: Apress Publishing>

>>> bpublisherwebsite

u'>

首先你打开localhost的提示是正常,说明你搭建django是成功了,只是你没有创建任何app,或者你创建了app但是没有同步到数据库(python managepy makemigratons,python managepy migrate,这两个命令必须在django17以上版本),如果你还没有任何app也可以执行,会创建内置的用户系统,等等。可以到localhost:8000/admin查看是否创建成功。

初始化数据库时会咨询你是否创建超级用户(即管理员)

然后python managepy migrate并不是在python文件目录执行,而是到你创建django项目中执行,找到managepy 这个文件的路径

错误代码 1045

Access denied for user 'root'@'localhost'

(using password:YES)

如果你的mysql也出现以上这种提示,

建议你逐个字看完我这篇文章再按以下方法来尝试解决问题

这是mysql数据库很多时候出现的问题, 网上流传很多解决办法 有人按照那些方法, 还真可以把问题解决了; 但也有很多人按那些方法解决不了问题!

而这个中原因, 就是没有对症下药!!!

网上的那些方法, 很多都没有明确指出是什么版本的mysql, 所以导致问题者不能对症下药

出现这个问题, 通过停止/重启 mysql 服务, 是可以解决的, 这个是最简单的办法! 对于不懂得什么叫做"停止/重启mysql服务"的人来说,

这个最简单的办法就是把服务器主机进行重新启动(就是把你的电脑进行重新启动)

以上是方法A! (这个方法适合任何版本的mysql)

以下是方法B:(方法仅适用于MySQL4026 版本!!! (我估计,

40的其他版本应该也可以的))

网上也有说, 就是对root进行重改密码 对于网上流传的改密码方法, 也是可行的 请参考以下:

DOS下修改ROOT密码:当然后面安装PHPMYADMIN后修改密码也可以通过PHPMYADMIN修改

格式:mysqladmin -u用户名 -p旧密码 password

新密码

例:给root加个密码ideacmblog

首先在进入CMD命令行,转到MYSQL目录下的bin目录,然后键入以下命令

mysqladmin

-uroot password ideacmblog

注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。

D:\php\MySQL\bin>mysqladmin -uroot password

ideacmblog回车后ROOT密码就设置为ideacmblog了

但是, 请注意了, 以上方法仅适用于MySQL4026

版本!!! (我估计, 40的其他版本应该也可以的)

方法C:

好了, 扯了那么多, 以上的两个方法都不是我本人测试过的, 本人不对真实性负责!

而现在我说一下本人亲自试过的方法, 以供参考:

话说今天, 我的服务器所有php及使用了mysql数据库的网站, 均挂掉了! 无法打开,

并有以下提示:

错误代码 1045

Access denied for

user 'root'@'localhost' (using password:YES)

一开始我也是不断搜索google(我本人不喜欢百度!),

去找寻解决的办法 看了很多, 也参照执行了, 事实上也是解决不了问题 后来我想到了是版本的问题, 不同的mysql版本,

解决办法是不一定一样的!!记住

我的mysql版本是: 5022

(mysql-essential-5022-win32)

今天一整天, 那些php网站均罢工 到今晚才有时间上去服务器继续寻找方法, 但仍然解决不了

最后, 我决定把mysql卸掉重新安装!

卸载很快, 而且不需要重新启动计算机

于是, 继续进行安装

第一步:

打开这个mysql-essential-5022-win32exe文件;

第二步: 见到窗口d出, 并点击 Next>

进入下一步;

第三步: 选择 Custom 项, 并点击

Next> 进入下一步;

第四步: 到这一步要注意了, 点击

Change 选择你原安装mysql的目录; 选择后, 继续点击Next> 进入下一步;

第五步: 点击 Install

进行安装

安装至下一步, 会提示你进行注册, 选择最后一项, 即跳过注册,

进入下一步正式完成安装

安装完成后, 继续d出一个窗口, 提示你是不是立刻进行配置,

选择 Next

选择Standard Configuration继续点击

Next 进入下一步

这一步里, 把上面那行的勾去掉, 只在 Include

PATH 那行打勾, 继续点击 Next 进入下一步

在这一步, 点击中间的"Ex"那顶,

接着配置完毕!

这时候, 你去看看你的mysql正常了没有

!!

这样就ok了!!!

使用环境:

python 27

django 13

python-ldap-243

django-auth-ldap-1012

settingspy:

import ldap

from django_auth_ldapconfig import LDAPSearch,PosixGroupType

AUTH_LDAP_SERVER_URI = 'ldap://:389' #服务器URI

AUTH_LDAP_BIND_DN = "cn=admin,dc=qfei,dc=com"

AUTH_LDAP_BIND_PASSWORD = "123456"

AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=staff,dc=qfei,dc=com", #查询用户

ldapSCOPE_SUBTREE, "(uid=%(user)s)")

AUTH_LDAP_GROUP_SEARCH = LDAPSearch("ou=staff,dc=qfei,dc=com", #查找组

ldapSCOPE_SUBTREE, "(objectClass=posixGroup)"

)

AUTH_LDAP_GROUP_TYPE = PosixGroupType(name_attr="cn")

AUTH_LDAP_USER_FLAGS_BY_GROUP = {

"is_staff": "cn=tech,ou=Tech,ou=Staff,dc=qfei,dc=com",

"is_active": "cn=tech,ou=Tech,ou=Staff,dc=qfei,dc=com",

"is_superuser": "cn=tech,ou=Tech,ou=Staff,dc=qfei,dc=com", #验证 Django 的 User 的is_staff,is_active,is_superuser

}

AUTH_LDAP_USER_ATTR_MAP = { #把LDAP中用户条目的属性 映射到 Django 的User

"username":"uid",

"password":"userPassword",

"first_name": "givenName",

"last_name": "sn",

"email":"mail",

}

AUTH_LDAP_MIRROR_GROUPS=True #注意 此为重点:当这个值为 True, LDAP的用户条目映射并创建 Django User 的时候,会自动映创建Group

AUTH_LDAP_ALWAYS_UPDATE_USER = True #是否每次都从LDAP 把用户信息 更新到 Django 的User

AUTH_LDAP_FIND_GROUP_PERMS = True #如果为True, LDAPBackend将提供基于LDAP组身份验证的用户属于的组的权限

AUTH_LDAP_CACHE_GROUPS = True #如果为True,LDAP组成员将使用Django的缓存框架。

AUTH_LDAP_GROUP_CACHE_TIMEOUT = 1800 #缓存时长

AUTHENTICATION_BACKENDS=( #设置使用 LDAPBackend

"django_auth_ldapbackendLDAPBackend",

"djangocontribauthbackendsModelBackend",

)

注:

1,需要创建 django 的 User Group 表

2,当LDAP条目 同步至 django User,Group 后,同关系型数据库一样 *** 作 数据即可

不足:暂时 未实现 django 表 至LDAP 的数据双向同步

目前到django17 为止 修改model的前提是:你已经创建完model,并且已经 使用 syncdb 或 migrate 创建了相应的数据库表。 然后再 修改model,不会对数据库表产生任何修改的。 具体的东西,自己去看 Django 相应版本的文档去吧 不同版本,不太一样。

安装软件

安装 Python 27、PyCharm、pip(Python包管理工具)、Django ( pip install Django)

部署

PyCharm 新建Django工程

完成后,其目录如下:

子目录MyDjangoProject下表示工程的全局配置,分别为setttingspy、urlspy和wsgipy,其中setttingspy包括了系统的数据库配置、应用配置和其他配置,urlspy则

表示web工程Url映射的配置。

子目录student则是在该工程下创建的app,包含了modelspy、testspy和viewspy等文件

templates目录则为模板文件的目录

managepy是Django提供的一个管理工具,可以同步数据库等等

启动

创建完成后,就可以正常启动了。点击Run 按钮,启动时报错了:

Traceback (most recent call last):

File "D:/workspace/MyDjangoProject/managepy", line 10, in <module>

execute_from_command_line(sysargv)

File "D:\Python27\lib\site-packages\django\core\management\__init__py", line 338, in execute_from_command_line

utilityexecute()

File "D:\Python27\lib\site-packages\django\core\management\__init__py", line 312, in execute

djangosetup()

File "D:\Python27\lib\site-packages\django\__init__py", line 18, in setup

appspopulate(settingsINSTALLED_APPS)

File "D:\Python27\lib\site-packages\django\apps\registrypy", line 89, in populate

"duplicates: %s" % app_configlabel)

djangocoreexceptionsImproperlyConfigured: Application labels aren't unique, duplicates: admin

应该是admin配置冲突了,打开setttingspy文件,发现admin配置重复了

INSTALLED_APPS = (

'djangocontribadmin',

'djangocontribauth',

'djangocontribcontenttypes',

'djangocontribsessions',

'djangocontribmessages',

'djangocontribstaticfiles',

'djangocontribadmin',

'student',

)

注释掉其中一行后(为什么会有这个问题,估计是个bug),重新启动,ok

web工程添加页面

此时,我们尚没有写一行代码,程序就duang跑起来了! 快添加一个Hello World的页面吧。

打开student/viewspy文件,输入以下内容

def sayHello(request):

s = 'Hello World!'

current_time = datetimedatetimenow()

html = '<html><head></head><body><h1> %s </h1><p> %s </p></body></html>' % (s, current_time)

return >

以上就是关于Python 和 Django 在WIN8下连接数据库全部的内容,包括:Python 和 Django 在WIN8下连接数据库、python + django 多表联合查询方法求教、pycharm中无django模块求解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9306522.html

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

发表评论

登录后才能评论

评论列表(0条)

保存