• django框架学习(数据库)


    Django为多种数据库后台提供了统一的调用API。根据需求不同,Django可以选择不同的数据库后台。MySQL算是最常用的数据库。我们这里将Django和MySQL连接;

    一、mysql驱动

    使用的sql连接包不同,Python2.x 版本要安装mysql-python,而Python3.x版本要安装 mysqlclient ;

    py文件输入:import MySQLdb     

    若未报错则安装成功!

    或者使用pymysql,如下操作:

    在APP中的__init__.py文件中添加代码:

    import pymysql
    pymysql.install_as_MySQLdb()

    如果在下面第四步时报错:mysqlclient 1.3.13 or newer is required; you have 0.9.3.

    则可修改部分文件代码可解决,参考来源:https://blog.csdn.net/weixin_33127753/article/details/89100552

    二、mysql用户创建和赋权

    1、启动mysql:  mysql -u root -p
    2、建库:    CREATE DATABASE villa DEFAULT CHARSET=utf8;
    3、创建账户:  create user '用户名'@'访问主机' identified by '密码';
      create user 'yinwenbin'@'localhost' identified by 'password';
    4、赋予权限:  grant 权限列表 on 数据库.* to '用户名'@'访问主机' ;(修改权限时在后面加with grant option)
    grant SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES
    on villa.* TO 'yinwenbin'@'localhost';
    grant all privileges on villa.* TO '用户名'@'localhost';
    //刷新系统权限表,否则会出现拒绝访问
    flush privileges;

    三、settings设置

    1、在settings.py中,将DATABASES对象更改为:

    DATABASES = {
        # 'default': {
        #     'ENGINE': 'django.db.backends.sqlite3',
        #     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        # }
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'villa',
            'USER': 'yinwenbin',
            'PASSWORD': 'password',
            'HOST':'localhost',
            'PORT':'3306',
        }
    }

    MySQL是关系型数据库。但在Django的帮助下,我们不用直接编写SQL语句。
    Django将关系型的表(table)转换成为一个类(class)。而每个记录(record)是该类下的一个对象(object)。

    四、models.py设置

    class Character(models.Model):
        name = models.CharField(max_length=200)
        def __unicode__(self):
            return self.name

    类Character定义了数据模型,它需要继承自models.Model。
    在MySQL中,类是一个表。表只有一列name,是类的属性。  可以看到,name是字符类型,最大长度为200。
    类Character有一个__unicode__()方法,用来说明对象的字符表达方式。如果是Python 3,定义__str__()方法,实现相同的功能。

    五、同步DB

    Django根据models.py中描述的数据模型,在MySQL中真正的创建各个关系表:
    以下命令适用django1.9版本及以上
    先执行  python manage.py makemigrations
    再执行  python manage.py migrate
    同步数据库后,Django将建立相关的MySQL表格

    六、查询DB数据并使用

    1、在Character表中name列插入Sidney 、Django 、John三条数据

    2、在views.py编辑相应的方法如下

    def operationDB(request):
        #objects是是django默认的管理器对象,自己也可以在Character类下设置:objects=models.Manage()
        data=Character.objects.all()
        staff_str = list(map(lambda a:a.name, data))
        return HttpResponse("<p>" + ' '.join(staff_str) + "</p>")

    3、在mysite下的urls.py加上上面步骤的路径,然后访问即可查看效果

    练习1:

    1、home.html文件修改

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>我的第一个网页</title>
    </head>
    
    <body>
    <a href="/add/4/5/">计算 4+5</a>
    <h1>{{ label }}</h1>
    </body>
    </html>

    2、views

    def index2(request):
        data = Character.objects.all()
        staff_str = list(map(lambda a: a.name, data))
        context = {}
        context['label'] = ' '.join(staff_str)
        return render(request,'home.html',context)

    练习2

    1、for.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>我的第二个网页</title>
    </head>
    
    <body>
    
    {% for item in staffs %}
    <p>{{ item.id }}, {{item}}</p>
    {% endfor %}
    
    </body>
    </html>

    2、views

    def operationDB(request):
        #objects是是django默认的管理器对象,自己也可以在Character类下设置:objects=models.Manage()
        data=Character.objects.all()
        #staff_str = list(map(lambda a:a.name, data))
        #return HttpResponse("<p>" + ' '.join(staff_str) + "</p>")
        return render(request,'for.html',{"staffs":data})
  • 相关阅读:
    LLC半桥谐振变换器调试记录
    工业派学习记录
    ubuntu 命令记录
    电容单位换算
    Windows快捷键
    CAN总线学习笔记
    Scala 基础(十五):Scala 模式匹配(三)
    Scala 基础(十四):Scala 模式匹配(二)
    Scala 基础(十三):Scala 模式匹配(一)
    scala 数据结构(十一):流 Stream、视图 View、线程安全的集合、并行集合
  • 原文地址:https://www.cnblogs.com/yinwenbin/p/11826036.html
Copyright © 2020-2023  润新知