使用pymysql连接mysql数据库

一、django连接mysql数据库

  • 1、如果要使用mysql数据库

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql', # 数据库引擎
            'NAME': 'djangotest', #数据库名称
            'USER': 'root', # 链接数据库的用户名
            'PASSWORD': 'root', # 链接数据库的密码
            'HOST': '127.0.0.1', # mysql服务器的域名和ip地址
            'PORT': '3306', # mysql的一个端口号,默认是3306
        }
    }
    
  • 2、如果你是使用pymysql连接工具必须要在站点__init__.py的文件配置

    django中默认使用MySQLDB数据库

    import pymysql
    pymysql.install_as_MySQLdb()
    

二、创建表操作

  • 1、根据上面方法配置mysql连接
  • 2、在models中创建一个model

    from django.db import models
    
    # Create your models here.
    
    class Student(models.Model):
        name = models.CharField(max_length=100, verbose_name='学生姓名')
        gender = models.CharField(max_length=2, verbose_name='性别')
        age = models.IntegerField(max_length=100, verbose_name='年龄')
        mobile = models.CharField(max_length=11, verbose_name='手机号码')
    
  • 3、运行命令创建数据库迁移文件

    每一次运行该下面命令就会在组件的migrations中生成一个文件

    python manage.py makemigrations
    
  • 4、运行命令生成表

    python manager.py migrate
    
  • 5、查看创建的表

    会生成很多表,先不去理会别的表

    mysql> show tables;
    +----------------------------+
    | Tables_in_django_test      |
    +----------------------------+
    | app01_studentmodal         |
    | auth_group                 |
    | auth_group_permissions     |
    | auth_permission            |
    | auth_user                  |
    | auth_user_groups           |
    | auth_user_user_permissions |
    | django_admin_log           |
    | django_content_type        |
    | django_migrations          |
    | django_session             |
    +----------------------------+
    11 rows in set (0.00 sec)
    
    mysql>
    
  • 6、创建的表命名规则(模块名_类名)

  • 7、查看表结构

    创建表的时候会默认创建一个自动递增的主键id字段

    mysql> desc app01_studentmodal;
    +--------+--------------+------+-----+---------+----------------+
    | Field  | Type         | Null | Key | Default | Extra          |
    +--------+--------------+------+-----+---------+----------------+
    | id     | int(11)      | NO   | PRI | NULL    | auto_increment |
    | name   | varchar(100) | NO   |     | NULL    |                |
    | gender | varchar(2)   | NO   |     | NULL    |                |
    | age    | int(11)      | NO   |     | NULL    |                |
    | mobile | varchar(11)  | NO   |     | NULL    |                |
    +--------+--------------+------+-----+---------+----------------+
    5 rows in set (0.00 sec)
    
    mysql>
    

三、关于自定义表名

  • 1、在model中添加一个类class Meta()

    class School(models.Model):
        """
        创建一个学校的model
        """
        school_name = models.CharField(max_length=100, verbose_name='学校名称', null=True, blank=True)
    
        # 定义表别名
        class Meta(object):
            db_table = 'school'
    
  • 2、查看表

    mysql> show tables;
    +----------------------------+
    | Tables_in_django_test      |
    +----------------------------+
    | app01_classmodel           |
    | app01_studentmodel         |
    | auth_group                 |
    | auth_group_permissions     |
    | auth_permission            |
    | auth_user                  |
    | auth_user_groups           |
    | auth_user_user_permissions |
    | django_admin_log           |
    | django_content_type        |
    | django_migrations          |
    | django_session             |
    | school                     |
    +----------------------------+
    13 rows in set (0.00 sec)
    
    mysql>
    

results matching ""

    No results matching ""