正经回答:先在数据库中建立好视图,然后django中建立对应的model。表所对应的类下面再建立一个Meta类,大致如下
class ViewModel(modelsModel):"""这个model类对应你所建立好的视图"""
class Meta(object):
"""同理,该方法可用于使用mysql中任何已有的表,不仅是视图"""
db_table = 'your_view' #显式指定表名,也就是你建立的视图的名字
managed = false #默认是ture,设成false django将不会执行建表和删表 *** 作
# 建立字段间的映射
# 需要注意的是,必须设一个字段为主键
# 不然django会自动创建一个id字段为主键,引发错误
百度知道越来越辣鸡了,全是答非所问的。
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
forms文件和数据库没关系,有关数据库的代码都卸载models文件中了,只能简历forms和models的关系,在forms文件中的form里面添加
内部类
Meta,Meta包含属性model指向对应model
在网上看到都是使用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和数据表就可以了。
可以使用逻辑关系运算符
例如:
SELECT FROM table_name
WHERE (条件1 and 条件2) 查询两个条件都符合的结果,
或者
SELECT FROM table_name
WHERE (条件1 or 条件2) 查询符合两个条件中满足任一条件的结果。
目前到django17 为止 修改model的前提是:你已经创建完model,并且已经 使用 syncdb 或 migrate 创建了相应的数据库表。 然后再 修改model,不会对数据库表产生任何修改的。 具体的东西,自己去看 Django 相应版本的文档去吧 不同版本,不太一样。
以上就是关于Django里面怎么实现数据库视图啊 就是虚拟表全部的内容,包括:Django里面怎么实现数据库视图啊 就是虚拟表、如何独立使用django的数据库访问功能、在django 的app里面新建了一个forms.py文件,请问怎么把这个文件绑定到数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)