Django里面怎么实现数据库视图啊 就是虚拟表

Django里面怎么实现数据库视图啊 就是虚拟表,第1张

正经回答:先在数据库中建立好视图,然后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文件,请问怎么把这个文件绑定到数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存