精华内容
下载资源
问答
  • 比如在一个项目,需要同时使用mysql、oracle存储的数据,将两个数据库中同一张的数据取出来,获取特的的字段再插入到另一张表中,这种多数据库交互操作有什么实现方法吗?
  • Django简单的数据库交互(mysql)

    千次阅读 2019-06-05 20:24:32
    在mysql数据库中创建一数据库test 1、设置数据库 在setting.py找到DATABASES字典 配置为 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql',#数据库类型 'NAME': '...

    一、数据库的简单交互

    首先你需要安装有自己的mysql数据库,此文不做介绍
    另外,你需要预设一个空数据库test用于之后的操作
    当然,你需要在虚拟环境中安装pymysql

    pip install pymysql
    

    在mysql数据库中创建一个空数据库test
    1、设置数据库
    在setting.py中找到DATABASES字典
    在这里插入图片描述
    配置为

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',#数据库类型
            'NAME': 'test',#数据库名字
            'USER':'root',#自己数据库用户名
            'PASSWORD':'123',#自己的数据库的密码
            'PORT':'3306'#mysql数据库端口,一般为3306,如果不是请修改
        }
    }
    

    2、添加驱动
    在命令行输入pip install pymysql安装python的pymysql库
    即导入python使用mysql数据库的包pymysql
    在项目中找到__init__.py文件
    写入代码

    import pymysql
    pymysql.install_as_MySQLdb()
    

    3、定义表字段
    打开项目中的models.py文件
    创建如下两个类,表示使用到数据库的表

    class AddressInfo(models.Model):
        '''地址表
        类里面的字段代表数据表中的字段(name),数据类型则由CharField(相当于varchar)、DateField(相当于datetime), max_length 参数限定长度'''
        add=models.CharField(max_length=50)
        class Meta:
            #元类
            db_table = 'addressinfo'#定义数据表名称
            verbose_name = '地址管理'#在网页端显示的名字
            verbose_name_plural = verbose_name#去复数形式
        def __str__(self):
            return self.add
    
    class UserInfo(models.Model):
        """ 用户表 """
        name=models.CharField(max_length=20)
        addinfo=models.ForeignKey(AddressInfo)
        #这个是两张表之间的关系,关系写在从表身上,ForeignKey()里面填写的是主表的类名
        class Meta:
            # 元类
            db_table = 'userinfo'
            verbose_name = '用户信息管理'
            verbose_name_plural = verbose_name
        def __str__ (self):
            return self.name
    

    4、数据库迁移
    使用命令行在项目目录下执行命令

    python manage.py makemigrations
    python manage.py migrate
    

    在这里插入图片描述
    在这里插入图片描述
    完成后打开数据库
    在这里插入图片描述
    可以看到除了django默认的数据表以外,addressinfo和userinfo表创建完成
    5、使用admin管理创建的字段表
    将设计的表注册到项目中的admin.py文件中

    from user.models import AddressInfo,UserInfo
    admin.site.register(UserInfo)
    admin.site.register(AddressInfo)
    

    创建超级用户
    使用指令python manage.py createsuperuser
    在这里插入图片描述
    超级用户创建成功,如果忘记密码可以执行命令python manage.py changepassword admin直接修改密码(admin为自定义的用户名)

    用浏览器进入http://127.0.0.1:8000/admin/
    在这里插入图片描述
    在这个可视化页面中可以方便的增删改自定义表单的数据
    6、admin页面细节调整
    在项目的apps.py文件中可以添加代码
    在这里插入图片描述
    可以将首页中除django外唯一的英文USER替换为中文,不修改也无伤大雅
    在这里插入图片描述

    二、django数据库交互语法

    对于存在外键的数据表进行修改或者增加操作时,需要写外键的id或者按照外键名获取外键名对应的id
    1、基本查询语法
    all,get,count,filter

    from user.models import UserInfo
    data1=UserInfo.bojects.all()#查询所有数据
    #返回多个对象
    
    data2=UserInfo.object.get(id=1)#按照指定条件查询
    #返回一个符合关键词的单一对象
    
    data3=UserInfo.objects.count()#查询符合条件的数据条数
    #返回数据的条数
    
    data4=UserInfo.objects.filter(id_lte=1)#查询多条符合条件的数据
    #id_gt=1 id大于1的数据
    #id_gte=3 id大于等于3的数据
    #id_lt=1 id小于1的数据
    #id_lte=1 id小于等于1的数据
    #name__startswidth='王' 查找名字字段中带有王的数据
    
    #格式:字段表模型类名.objects.方法()
    

    2、基本的增加语句
    方法一:

    data1 = AddressInfo(add='北京',)#填写多个字段的数据
    data1.save()#完成操作
    

    方法二:

    AddressInfo.objects.create(add='北京',)
    

    3、基本删除语句

    data1 = AddressInfo.objects.get(add='北京')
    data1.delete()#使用任意查询语句后跟.delete()即可删除指定数据
    

    4、基本修改语句
    方法一:

    data1 = AddressInfo.objects.get(add='北京')
    data1.add='上海'#使用任意查询语句后跟列名直接使用等于即可修改
    data1.sava()#保存修改
    

    方法二:

    AddressInfo.objects.all().update(add='北京')#直接修改,不需要保存修改
    AddressInfo.objects.filter(name=name).update(add='北京')#update只能操作对象,get方法获得的字符串则不能使用update方法
    

    三、网页与数据库交互

    这里用到tag标签和view方法
    使用方法:https://blog.csdn.net/changfcqxhy/article/details/90778848
    1、html页面显示数据库返回的数据
    html网页

    <body>
        <ul>
            {% for obj in data %}
            <li> {{ obj.name }}</li>
            <li> {{ obj.addinfo }}</li>
            {% endfor %}
        </ul>
    </body>
    

    添加视图views
    此处直接使用all方法查找所有数据

    from user.models import UserInfo
    def show(request):
        data=UserInfo.objects.all()
        context={'data':data}
        return render(request,'show.html',context)
    

    添加urls

    from user import views
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^index/$',views.index),
        url(r'^show/$',views.show),
    ]
    

    运行服务器后打开网址 http://127.0.0.1:8000/show/
    在这里插入图片描述
    显示成功
    2、html页面增加数据库数据
    form表单中提交数据可以使用get请求也可以使用post请求
    使用get请求时同理,使用正则表达式取出数据即可
    这里仅演示使用post请求的方法

    html页面
    {% csrf_token %}防止csrf错误

    <body>
        <form method="POST" action="/adduser/">
       		 {% csrf_token %}
            <sapn>名字</sapn><input type="text" name="name">
            <sapn>地址</sapn><input type="text" name="address">
            <input type="submit" value="提交">
        </form>
    </body>
    

    添加视图views

    def adduser (request):
        """ 添加用户数据视图 """
        name=request.POST.get('name')#获取post请求返回的名字
        address=request.POST.get('address')#获取post请求返回的地址
        if request.POST.get('name'):#如果返回有数据
            try:
                addinfo=AddressInfo.objects.get(add=address)#试图查找地址
            except:#已有地址中找不到则添加新地址
                addinfo=AddressInfo.objects.create(add=address)#添加新的地址
            UserInfo.objects.create(name=name,addinfo=addinfo)#将用户信息加入到用户表中
        return render(request,'adduser.html')
    
    

    添加urls

    from user import views
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^index/$',views.index),
        url(r'^show/$',views.show),
        url(r'^adduser/$',views.adduser),
    ]
    

    运行服务器之后打开网址 http://127.0.0.1:8000/adduser/
    输入如下内容
    在这里插入图片描述
    提交后,服务器cmd中看到
    在这里插入图片描述
    成功收到post请求,没有报错,操作成功
    在这里插入图片描述
    在这里插入图片描述
    新地址和新用户添加成功
    3、html页面删除数据库数据
    html页面

    <body>
        {% for obj in test %}
        <h1>{{obj}}</h1>
        {% endfor %}
        <form method="POST" action="/delete/">
            {% csrf_token %}
            <select name="name">
                {% for obj in data %}
                <option value={{ obj.name }}>{{ obj.name }}</option>
                {% endfor %}
            </select>
            <input type="submit" value="提交">
        </form>
    </body>
    

    添加视图views

    def delete(request):
        '''删除用户数据'''
        def ret(res):
            '''返回的函数'''
            data=UserInfo.objects.all()
            context={'data':data}
            context['test']=[res]#动态输出网页标题
            return render(request,'delete.html',context)
        if request.method=='GET':
            res='请选择要删除的用户数据'
            return ret(res)#get请求直接返回页面
        else:
            name=request.POST.get('name')#获取post请求返回的名字
            UserInfo.objects.get(name=name).delete()#删除对应数据
            res='%s的数据已删除,你可以继续选择要删除的数据'%name
            return ret(res)
    
    

    添加urls

    from user import views
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^index/$',views.index),
        url(r'^show/$',views.show),
        url(r'^adduser/$',views.adduser),
        url(r'^delete/$',views.delete),
    ]
    

    运行服务器之后打开网址 http://127.0.0.1:8000/delete/
    这里选择删除老王的数据
    在这里插入图片描述
    删除成功
    在这里插入图片描述
    mysql数据库中已经没有老王的数据了
    在这里插入图片描述
    4、html页面修改数据库数据
    html页面

    <body>
        <h3>修改密码</h3>
        <form method="POST" action="/cpwd">
            {% csrf_token %}
            <sapn>用户名</sapn><input type="text" name="username">
            <sapn>原密码</sapn><input type="password" name="pwd">
            <sapn>新密码</sapn><input type="password" name="npwd">
            <sapn>确认密码</sapn><input type="password" name="cpwd">
            <input type="submit" value="确认修改">
            
        </form>
    </body>
    

    添加视图views

    def alert (request):
        """ 修改用户数据 """
        def ret(res):
            '''返回的函数'''
            data=UserInfo.objects.all()
            print('###',data)
            context={'data':data}
            context['test']=[res]#动态输出网页标题
            print('###',context)
            return render(request,'alert.html',context)
        if request.method=='GET':
            res='修改用户地址'
            return ret(res)#get请求直接返回页面
        else:
            name=request.POST.get('name')#获取post请求返回的名字
            address=request.POST.get('address')#获取post请求返回的地址
            res='%s地址已修改为%s'%(name,address)
            try:
                addinfo=AddressInfo.objects.get(add=address)#试图查找地址
            except:
                addinfo=AddressInfo.objects.create(add=address)#添加新的地址
            UserInfo.objects.filter(name=name).update(addinfo=addinfo)#按照用户名修改用户的地址
            return ret(res)
    
    

    添加urls

    from user import views
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^index/$',views.index),
        url(r'^show/$',views.show),
        url(r'^adduser/$',views.adduser),
        url(r'^delete/$',views.delete),
        url(r'^alert/$',views.alert),
    ]
    

    运行服务器之后打开网址 http://127.0.0.1:8000/alert/
    修改小王的地址为深圳
    在这里插入图片描述
    修改完成
    在这里插入图片描述
    查询数据库

    在这里插入图片描述在这里插入图片描述
    地址表中增加了深圳这个条目,同时小王的地址id已经修改为深圳代表的4

    展开全文
  • mybatis与数据库交互方式

    千次阅读 2017-09-19 10:19:55
    这篇文章直接上核心代码:service层和controller层基本一样,不需要改变什么,只是dao层和xml配置文件关于和数据库交互这块有些许不同。。 1.使用传统的MyBatis提供的API。 spring----xml文件: ...

    这篇文章直接上核心代码:service层和controller层基本一样,不需要改变什么,只是dao层和xml配置文件关于和数据库交互这块有些许不同。。

    1.使用传统的MyBatis提供的API。

    spring----xml文件:

    mybatis---xml文件(两个):

    这个要注意namespace

    dao层的实现代码:BaseDaoImpl

    teacherDaoImpl:

    2.使用Mapper接口

    spring----xml文件:

    mybatis---xml文件(两个):

    mybatis-config.xml(mybatis的一些特性)

    sql关联的xml(注意namespace的区别):

    dao层接口:

    ---------------------------------------------------------------------------

    dao层在service层的调用是一样的 都是通过@resource注解,注入成功。在测试代码里边,测试也是一样:

    或者:




    展开全文
  • 写在前面 博主近期有时间的话,一直在抽空看Django相关的项目,苦于...本博客记录的是《Django web 应用开发实战》这本书第八章表单与模型的相关内容,主要内容是表单与数据库交互。编译环境如下: Python3.7 py

    写在前面

    博主近期有时间的话,一直在抽空看Django相关的项目,苦于没有web开发基础,对JavaScript也不熟悉,一直在从入门到放弃的边缘徘徊(其实已经放弃过几次了,如下图,一年前的笔记)。总体感受web开发要比其他技术栈难,前后端技术都有涉及。如果没有实体项目支撑的话,很难学下去。但不管怎样,学习都是一件痛苦的事情,坚持下去总会有收获。
    在这里插入图片描述
    本博客记录的是《Django web 应用开发实战》这本书第八章表单与模型中的相关内容,主要内容是表单与数据库的交互。编译环境如下:

    • Python3.7
    • pycharm2020.1专业版(社区版应该是不支持Django项目调试的)

    项目结构及代码

    项目结构

    在pycharm中建立Django项目后,会自动生成一些基础的文件,如settings.py,urls.py等等,这些基础的东西,不再记录,直接上我的项目结构图。
    在这里插入图片描述

    上图中左侧为项目结构,1为项目应用,也叫APP,2是Django的项目设置,3是项目的模板,主要是放网页的。

    路由设置

    路由设置是Django项目必须的,在新建项目是,在index目录、MyDjango目录下面生成了urls.py文件,里面默认有项目的路由地址,可以根据项目情况更改,我这里上一下我的路由设置。

    # MyDjango/urls.py
    """MyDjango URL Configuration
    
    The `urlpatterns` list routes URLs to views. For more information please see:
        https://docs.djangoproject.com/en/3.0/topics/http/urls/
    Examples:
    Function views
        1. Add an import:  from my_app import views
        2. Add a URL to urlpatterns:  path('', views.home, name='home')
    Class-based views
        1. Add an import:  from other_app.views import Home
        2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
    Including another URLconf
        1. Import the include() function: from django.urls import include, path
        2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
    """
    from django.contrib import admin
    from django.urls import path, include
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('', include(('index.urls', 'index'), namespace='index'))
    ]
    
    
    # index/urls.py
    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    # author:HP
    # datetime:2021/6/15 15:35
    from django.urls import path, re_path
    from .views import *
    urlpatterns = [
        path('', index, name='index'),
    ]
    

    数据库配置

    数据库的配置,以及模板的设置等内容都在settings.py文件中,在项目生成的时候,自动生成。
    数据库设置在DATABASE字典中进行设置,默认的是sqlite3,我也没改。这里可以同时配置多个数据库,具体不再记录。
    看代码:

    """
    Django settings for MyDjango project.
    
    Generated by 'django-admin startproject' using Django 3.0.8.
    
    For more information on this file, see
    https://docs.djangoproject.com/en/3.0/topics/settings/
    
    For the full list of settings and their values, see
    https://docs.djangoproject.com/en/3.0/ref/settings/
    """
    
    import os
    
    # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    
    
    # Quick-start development settings - unsuitable for production
    # See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/
    
    # SECURITY WARNING: keep the secret key used in production secret!
    SECRET_KEY = '6##c(097i%=eyr-uy!&m7yk)+ar+_ayjghl(p#&(xb%$u6*32s'
    
    # SECURITY WARNING: don't run with debug turned on in production!
    DEBUG = True
    
    ALLOWED_HOSTS = []
    
    
    # Application definition
    
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        # add a new app index
        'index',
        'mydefined'
    ]
    
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]
    
    ROOT_URLCONF = 'MyDjango.urls'
    
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR, 'templates')]
            ,
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    
    ]
    '''
        {
            'BACKEND': 'django.template.backends.jinja2.Jinja2',
            'DIRS': [
                os.path.join(BASE_DIR, 'templates'),
            ],
            'APP_DIRS': True,
            'OPTIONS': {
                'environment': 'MyDjango.jinja2.environment'
            },
        },
        '''
    
    WSGI_APPLICATION = 'MyDjango.wsgi.application'
    
    
    # Database
    # https://docs.djangoproject.com/en/3.0/ref/settings/#databases
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }
    
    
    # Password validation
    # https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators
    
    AUTH_PASSWORD_VALIDATORS = [
        {
            'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
        },
        {
            'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
        },
        {
            'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
        },
        {
            'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
        },
    ]
    
    
    # Internationalization
    # https://docs.djangoproject.com/en/3.0/topics/i18n/
    
    LANGUAGE_CODE = 'en-us'
    
    TIME_ZONE = 'UTC'
    
    USE_I18N = True
    
    USE_L10N = True
    
    USE_TZ = True
    
    
    # Static files (CSS, JavaScript, Images)
    # https://docs.djangoproject.com/en/3.0/howto/static-files/
    
    STATIC_URL = '/static/'
    
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'static')
    ]
    

    定义模型

    怎么来解释“模型”这个东西,我感觉挺难解释清楚,首先得解释ORM框架,它是一种程序技术,用来实现面向对象编程语言中不同类型系统的数据之间的转换。这篇博客涉及到前端和后端的数据交互,那么首先你得有个数据表,数据表是通过模型来创建的。怎么创建呢,就是在项目应用里面创建models.py这个文件,然后在这个文件中写几个类,用这个类来生成数据表,先看看这个项目的models.py代码。

    from django.db import models
    
    
    class PersonInfo(models.Model):
        id = models.AutoField(primary_key=True)
        name = models.CharField(max_length=20)
        age = models.IntegerField()
        # hireDate = models.DateField()
    
        def __str__(self):
            return self.name
    
        class Meta:
            verbose_name = '人员信息'
    
    
    class Vocation(models.Model):
        id = models.AutoField(primary_key=True)
        job = models.CharField(max_length=20)
        title = models.CharField(max_length=20)
        payment = models.IntegerField(null=True, blank=True)
        person = models.ForeignKey(PersonInfo, on_delete=models.CASCADE)
    
        def __str__(self):
            return str(self.id)
    
        class Meta:
            verbose_name = '职业信息'
    
    
    
    

    简单解释一下,这段代码中定义了两个类,一个是PersonInfo,一个是Vocation,也就是人员和职业,这两个表通过外键连接,也就是说,我的数据库中,主要的数据就是这两个数据表。
    在创建模型后,在终端输入以下两行代码:

    python manage.py makemigrations
    python manage.py migrate
    

    这样就可以完成数据表的创建,数据迁移也是这两行代码。同时,还会在项目应用下生成一个migrations文件夹,记录你的各种数据迁移指令。
    看看生成的数据库表:
    在这里插入图片描述
    上面图中,生成了personinfo和vocation两张表,可以自行在表中添加数据。

    定义表单

    表单是个啥玩意儿,我不想解释,因为我自己也是一知半解。这个就是你的前端界面要显示的东西,通过这个表单,可以在浏览器上生成网页表单。怎么创建呢,同样是在index目录(项目应用)下新建一个form.py文件,在该文件中添加以下代码:

    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    # author:HP
    # datetime:2021/6/24 14:55
    
    from django import forms
    from .models import *
    from django.core.exceptions import ValidationError
    
    
    def payment_validate(value):
        if value > 30000:
            raise ValidationError('请输入合理的薪资')
    
    
    class VocationForm(forms.Form):
        job = forms.CharField(max_length=20, label='职位')
        title = forms.CharField(max_length=20, label='职称',
                                widget=forms.widgets.TextInput(attrs={'class': 'cl'}),
                                error_messages={'required': '职称不能为空'})
        payment = forms.IntegerField(label='薪资',
                                     validators=[payment_validate])
    
        value = PersonInfo.objects.values('name')
        choices = [(i+1, v['name']) for i, v in enumerate(value)]
        person = forms.ChoiceField(choices=choices, label='姓名')
    
        def clean_title(self):
            data = self.cleaned_data['title']
            return '初级' + data
    
    

    简单解释一下,就是说我待会儿生成的网页上,要显示job、title、payment还有一个人名下拉框,这些字段以表单形式呈现在网页上。

    修改模板

    模板实际上就是网页上要显示的信息,为啥叫模板呢,因为你可以自定义修改,在index.html中修改,如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    {% if v.errors %}
        <p>
            数据出错了,错误信息:{{ v.errors }}
        </p>
    {% else %}
        <form action="" method="post">
            {% csrf_token %}
            <table>
                {{ v.as_table }}
            </table>
            <input type="submit" value="submit">
        </form>
    {% endif %}
    </body>
    </html>
    

    视图函数

    视图函数其实就是views.py文件中的函数,这个函数非常重要,在项目创建的时候自动生成,它是你的前后端连接的枢纽,不管是FBV视图还是CBV视图,都需要它。
    先来看看这个项目中视图函数的代码:

    from django.shortcuts import render
    from django.http import HttpResponse
    from index.form import VocationForm
    from .models import *
    
    
    def index(request):
        # GET请求
        if request.method == 'GET':
            id = request.GET.get('id', '')
            if id:
                d = Vocation.objects.filter(id=id).values()
                d = list(d)[0]
                d['person'] = d['person_id']
                i = dict(initial=d, label_suffix='*', prefix='vv')
                # 将参数i传入表单VocationForm执行实例化
                v = VocationForm(**i)
            else:
                v = VocationForm(prefix='vv')
            return render(request, 'index.html', locals())
        # POST请求
        else:
            # 由于在GET请求设置了参数prefix
            # 实例化时必须设置参数prefix,否则无法获取POST的数据
            v = VocationForm(data=request.POST, prefix='vv')
            if v.is_valid():
                # 获取网页控件name的数据
                # 方法一
                title = v['title']
                # 方法二
                # cleaned_data将控件name的数据进行清洗
                ctitle = v.cleaned_data['title']
                print(ctitle)
                # 将数据更新到模型Vocation
                id = request.GET.get('id', '')
                d = v.cleaned_data
                d['person_id'] = int(d['person'])
                Vocation.objects.filter(id=id).update(**d)
                return HttpResponse('提交成功')
            else:
                # 获取错误信息,并以json格式输出
                error_msg = v.errors.as_json()
                print(error_msg)
                return render(request, 'index.html', locals())
    

    其实就一个index函数,不同请求方式的时候,显示不同的内容。这里要区分get和post请求,get是向特定资源发出请求,也就是输入网址访问网页,post是向指定资源提交数据处理请求,比如提交表单,上传文件这些。
    好吧,这样就已经完成了项目所有的配置。
    启动项目,并在浏览器中输入以下地址:

    http://127.0.0.1:8000/?id=1
    

    这是个get请求,显示内容如下:
    在这里插入图片描述
    这个网页显示了form中设置的表单,并填入了id为1的数据信息。
    我想修改这条数据信息,直接在相应的地方进行修改,修改如下:
    在这里插入图片描述
    然后点击submit按钮,也就是post请求,跳转网页,显示如下:
    在这里插入图片描述
    刷新俺们的数据库,看看数据变化了没:
    在这里插入图片描述
    id为1的数据已经修改成了我们设置的内容。
    至此,表单和数据交互这个小节的内容已经结束。

    记录感受

    Django项目,创建之初要设置路由,如果要用到数据库,需要配置数据库,然后通过模型来创建数据表,并通过终端指令完成数据表创建和迁移,随后定义表单格式,最后在视图函数中设置各种请求方式。
    感受就是两个字,繁杂、
    路漫漫其修远兮,继续学习吧~~

    展开全文
  • 需求是我们的系统要获取ERP放在服务器中间上的数据,我们系统不存放数据,只发送请求和返回接收信息,作为客户端需要怎么做? 是直接连接数据库读取数据,还是连接服务器读取数据。。。 第一次做,没一点头绪。。...

    需求是我们的系统要获取ERP放在服务器中间表上的数据,我们系统不存放数据,只发送请求和返回接收信息,作为客户端需要怎么做?
    是直接连接数据库读取数据,还是连接服务器读取数据。。。
    第一次做,没一点头绪。。。

    展开全文
  • springboot (5) 与数据库进行交互

    千次阅读 2017-07-13 17:00:51
    本篇开始讲述springboot项目如何与数据库交互,本篇大致分为部分:  一.与数据库建立连接  二.使用spring data jpa与数据库进行交互 一、与数据库建立连接,本文采用MYSQL数据库 1.首先在pom.xml添加...
  • 两个数据库之间的连接--dblink

    千次阅读 2019-05-16 18:30:22
    有些时候,我们在操作数据库的时候,需要用到查询另一个数据库中的某个数据,这样的话,我们需要用到dblink连接 配置方法: 一.在qlsql developer里面配置 1.找到Dtatebase links 右键新建连接 2.在弹出的窗口...
  • pandas和数据库进行交互(以mysql为例)

    万次阅读 多人点赞 2016-07-17 22:34:32
    在新版的pandas,主要是以sqlalchemy方式与数据库建立链接 支持Mysql、postgresql、Oracle、MS SQLServer、SQLite等主流数据库 本例以MySql为代表,展示将从tushare获取到的股票数据存入数据库的方法 其他类型...
  • Python与数据库交互

    千次阅读 2018-09-16 23:17:07
    Python与数据库交互 一、背景 在没有DB-API之前,各数据库之间的应用接口非常混乱,实现各不相同,如果项目需要更换数据库,基本上需要把所有和数据库相关的代码都进行改动,十分不方便。 DB-API DB-API的...
  • 数据库和网页之间的交互

    万次阅读 2016-11-23 21:47:45
    这几天学了数据库 sql jdbc xml servlet 的基础,在这里留点自己的总结. ... 就是一文件系统,使用标准的sql对数据库进行操作(crud) 2)常见的数据库 * oracle: 是oracle公司产品,是大型的收费的数据库
  • 进行java语句,然后先进行导包,接着进行数据库的连接,sql语句,最后根据返回的内容进行排版输出。    1.导包:利用这<%@ page import="java.sql.*" %>在jsp页面最上头(第二行)加上这句,导包java....
  • spring-boot入门(四)与数据库交互

    千次阅读 2018-01-07 14:36:58
    前面几章已经介绍了如何与页面交互,这章将介绍如何与数据库进行交互 1. 配置数据源 这里为了方便使用tomcat数据源,后面会讲解其它数据源的配置。在application.yml里面添加如下代码: spring: datasource: ...
  • Android通过Web与后台数据库交互

    千次阅读 多人点赞 2019-10-11 00:57:15
    开发一app与后台数据库交互,基于mysql+jdbc,没有使用DBUtils或jdbc框架,纯粹底层jdbc实现. 2.开发环境 系统 : win10 IDE : Android Studio 3.5.1,IntelliJ IDEA 2019.02 DBMS : Mysql 8.0....
  • 在开发过程,有时因数据库设计者未考虑周到,业务实体有一属性没有对应的字段,因此需要在数据库表加一字段,又由于此字段要求不可为空,并且在开发阶段,测试数据不多,有时是drop掉了原来的,增加了一...
  • 关于MYSQL两个表取差集

    千次阅读 2020-03-04 10:53:18
    由于我个人比较喜欢减少数据库交互,所以在网上查了下关于mysql两个表取差集的方案。但是发现很多的 差集的sql是有这两种方式: 第一种是通过not in的方式去处理: select mailbox_id from co_user where ...
  • sqlserver-不同数据库之间的数据交互

    千次阅读 2018-05-19 19:03:53
    在 A数据库中,需要查询B数据库中b_table这张表的数据↓select * from B.dbo.b_table即可,增删改 操作按以上原来即可完成。可通用在创建触发器,定时器,存储过程,自定义函数等...
  • node.js 链接数据库实现vue与后端交互

    千次阅读 2019-04-05 10:03:05
    首先实现vue前端的简单页面...设置vue.config.js:设置跨域相关(本身是在自己电脑上启动两个服务器一个后端服务器一个是vue启动的服务端口不同会造成跨域的问题) module.exports = { publicPath: '/', devServ...
  • 最通俗易懂的python与mysql数据库交互

    千次阅读 多人点赞 2020-01-04 13:10:54
    如果你想要使用python操作MySQL数据库,就必须先要安装pymysql库,这库的安装很简单,直接使用pip install pymysql;进行安装。 假如上面这种方式还是安装不上,就用如下链接找一合适的安装包进行安装,这就不...
  • 交互式分析型数据库Hologres

    千次阅读 2020-12-07 17:59:26
    Hologres已经和MaxCompute无缝打通,能够直接在Hologres对MaxCompute表进行查询。 PG生态 Hologres兼容PostgreSQL生态,能够与PG开发工具、BI工具进行对接,同时在阿里云提供了一套原生的开发平台,能够在WebIDE...
  • 这是十分有价值的实践活动,比如,在网站的数据管理,我们需要将远程数据库的数据保存到本地数据库中,将SQL Server数据库的数据保存到Oracle,等等。 1、建立远程数据库的连接: public static ...
  • nodejs与mysql数据库交互操作

    万次阅读 2016-11-19 17:52:19
    mysql数据库版本:mysql-5.7.16-winx64,在官网下载zip包,修改一下配置,即可通过命令安装到电脑上。首先看一下连接的过程:var mysql = require('mysql'); //调用MySQL模块//创建一connection var connection = ...
  • 数据库多级联动设计

    万次阅读 2018-03-06 17:23:52
    设计社区数据库时,遇到有关 物业公司 社区 楼栋 单元 房屋 的基础设计。 这几张之间都是包含关系,故设计为此形式。有点类似于链表。为了叙述方便,暂且称大的概念为高级,小的概念为低级。低级关系着...
  • 目前,Hibernate有3种查询数据库的方法:HQL Query,Criteria Query,原生的sql查询。查询方式,只要懂一点sql很容易上手,而数据格式和解析方式却会给新手带来一定的困扰。日前由于公司产品迭代,需要更新升级部分...
  • 现在,给大家讲解,如何用SQL命令在MySQL创建一个数据库及数据。 在学习前,我们首先要了解,SQL命令是什么? SQL 结构化查询语言,专门用来操作关系型数据库 知道了SQL命令是什么,我们还要知道)SQL命令...
  • 作为一程序员,不了解数据库怎么能行,那么数据库到底是啥呢,作为一Java工程师,平时和数据库打交道着实不少,所谓的CRUD其实就是对数据库进行增删改查的操作。 根据百度百科的介绍,数据库是“按照数据...
  • 如何使用nodejs与mysql进行数据交互

    千次阅读 2018-07-09 18:23:22
    ArthurSlog SLog-1 Year·1 Guangzhou·China July 6th 2018 没有人能阻挡我前进的道路 ...安装nodejs作为开发服务器的工具(macOS) ... 新建一文件夹“nodejs_learningload” mkdir nodejs_learningload ...
  • c#连接SQL数据库并读取数据种方法

    万次阅读 多人点赞 2019-01-17 22:23:39
    今天分享一下C#如何连接数据库并且读取数据种方法。 C#连接SQL数据库主要通过微软库函数来实现,具体步骤分为以下三步 第一,使用SqlConnection对象连接数据库; 需要引用System.Data.SqlClient; 第二,建立...
  • 在Flask使用数据库我们将使用Flask-SQLAlchemy 的扩展来管理数据库。由SQLAlchemy项目提供的,已封装了关系对象映射(ORM)的一插件。... 迁移大多数数据库教程都覆盖了创建和使用一个数据库的方法,...
  • Android 通过Web服务器与Mysql数据库交互

    万次阅读 多人点赞 2018-03-11 17:03:26
    之前一直没时间回复大家,抱歉,现在已经把Demo放在Github上面了。 欢迎star ... 一、主要内容 ... 以手机登录为例,实现与数据库交互。... 分成两个项目:前端(android 简易界面),后端(数据库操作) 二、开...
  • Python与数据库简单交互

    千次阅读 2017-10-19 23:21:49
    尝试与数据库进行对接 创建数据 在数据表中插入记录 在数据表中查询记录 在数据表中更新记录 在数据表中删除记录 执行事务机制 Python DB-API使用流程Python DB-API使用流程: • 引入 API 模块。 • 获取与数据库...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 410,597
精华内容 164,238
关键字:

数据库中的两个表怎么进行交互