1 安装Django
[plain] view plain copy
cd Django-14
python setuppy install
2 安装postgresql的客户端:
[plain] view plain copy
sudo apt-get install -y postgresql-client-91 python-psycopg2
3 新建project:
[plain] view plain copy
django-adminpy startproject myproject
4 在myproject下新建app:
[plain] view plain copy
python managepy startapp myapp
4 新增环境变量:
编辑/etc/profile文件,在末尾加入以下语句:
[plain] view plain copy
<span style="color:#FF0000;"> export PYTHONPATH=$PYTHONPATH:/home/yc/src/myproject
export DJANGO_SETTINGS_MODULE=myprojectsettings</span>
5
假设数据库已经由Django的另一个应用(名称为otherapp)建好,数据库类型是postgresql,名称为mydb,位于
192168123。见好的数据库中有一个表,名称是otherapp_user,则将otherapp/modelspy拷贝到myapp
/modelspy。
注意检查modelspy下的class user类的class Meta:部分,如果没有applabel标签,则要加上:app_label='otherapp'
再修改/home/yc/src/myproject下的settingspy文件,如下:
[plain] view plain copy
DATABASES = {
'default': {
'ENGINE': 'djangodbbackendspostgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'
'NAME': 'mydb', # 'vps2db_test1' Or path to database file if using sqlite3
'USER': 'postgres', # Not used with sqlite3
'PASSWORD': '123', # Not used with sqlite3
'HOST': '192168123', # Set to empty string for localhost Not used with sqlite3
'PORT': '5432', # Set to empty string for default Not used with sqlite3
}
}
[plain] view plain copy
INSTALLED_APPS = (
'djangocontribauth',
'djangocontribcontenttypes',
'djangocontribsessions',
'djangocontribsites',
'djangocontribmessages',
'djangocontribstaticfiles',
'<span style="color:#FF0000;">myapp</span>',
)
6 在myapp目录下编写测试程序
[python] view plain copy
from models import user
if __name__=="__main__":
try:
u = userobjectsget(id=user_id)
except userDoesNotExist:
print "user not exist)
return None
else:
return u
方法/步骤
修改settingpy里面的DATABASES元组为
DATABASES = {
'default': {
'ENGINE': 'djangodbbackendsmysql',
'NAME': 'books', #你的数据库名称
'USER': 'root', #你的数据库用户名
'PASSWORD': '', #你的数据库密码
'HOST': '', #你的数据库主机,留空默认为localhost
'PORT': '3306', #你的数据库端口
}
}
INSTALLED_APPS = (
'books',#你的数据库名称
)
在mysql里面创建books数据库
检查配置是否有语法错误
使用python managepy sqlall books 显示mysql语法
使用python managepy syncdb同步模型中的数据库
创建成功!
settingpy:都要配置下
USER, PASSWORD, HOST
MySQL插件 :MySQL-python version 121p2 or higher
ENGINE :djangodbbackendsmysql
NAME:你的数据库名字
PostgreSQL插件:postgresql_psycopg2 地址>
ENGINE :djangodbbackendspostgresql_psycopg2
NAME:你的数据库名字
例如我的oracle配置:
可以啊。不过要手工写了。在配置里将数据库路径放进去。然后在module里,自己选择相应的库与相应的model做关联。
此外还可以指定表格中的字段名。另外如果上面的方法不好用,你也可以自己直接连接数据库,自己管理。
django的数据库连接是没有连接池的。 每次访问都连接一次,效率低。不过你也可以用同样的原理 ,用mysqldb之类的库,自己建立数据库连接。
django 怎么从数据库读数据,成为表单默认值
最简单的办法是。为数据库的表建立一个model。具体做法是这样子。
1在settingspy里设置数据库连接方式。连接错误后面都没有办法
2在models设置一个数据库表的对应数据结构,通常叫关系对象模型,所以叫model,它就是一个类。你可以用django-adminpy probe,似乎是这个命令,就是一个数据库的探测命令,可以根据表,自动生成model的代码。当然如果你先写了model的代码就可以用syncdb命令生成数据库的表
在网上看到都是使用Django的models和makemigration,migrate命令来创建新表,并使用。可是我的数据已经存在了已经创建好,并且已经存储有数据了,不能再重新创建新表了。了解Django的表明和models名称的映射关系就可以让Django使用已经存在的表。
假如在Django存在models如下:
[python] view plain copy
from djangodb import models
# Create your models here
class Sciencenews(modelsModel):
id = modelsCharField(max_length=36,primary_key=True)
first_module = modelsCharField(max_length=30,default="News")
second_module = modelsCharField(max_length=30,default="Latest News")
title = modelsCharField(max_length=300)
author = modelsCharField(max_length=60,null=True)
publish_date = modelsCharField(max_length=35,null=True)
content = modelsTextField(null=True)
crawl_date = modelsCharField(max_length=35,null=True)
from_url = modelsCharField(max_length=350,null=True)
执行数据迁移命令:[python] view plain copy
python managepy makemigration
python managepy migrate
会在数据库中生成名称为show_sciencenews的数据表。show为应用名称,此处我的应用名称为show。可以看到Django创建表的命名规则:应用名_模型名。我的存储爬取到的数据的表格名称原来为science_news,想要Django使用它,而不是创建新的表,只需要把的它的名称改为:应用名_要与该表映射的models名称,在此处我改为show_sciencenews。然后使用如上的数据迁移命令,这时可能会提示数据表已经存在的错误,不用理会,models已经和数据表映射上了。接下来只需要正常使用models和数据表就可以了。
forms文件和数据库没关系,有关数据库的代码都卸载models文件中了,只能简历forms和models的关系,在forms文件中的form里面添加
内部类
Meta,Meta包含属性model指向对应model
以上就是关于如何独立使用django的数据库访问功能全部的内容,包括:如何独立使用django的数据库访问功能、py3.6.2下,django 框架连接数据库的时候出现的、Python 和 Django 在WIN8下连接数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)