美文网首页
Django配置mysql数据库

Django配置mysql数据库

作者: minlover | 来源:发表于2022-04-05 08:45 被阅读0次

    一、配置数据库

    Django默认数据库为sqlite

    若该项目要使用mysql数据库,需要更改配置

    1、项目下setting.py中添加如下代码

    import pymysql

    pymysql.install_as_MySQLdb()

    DATABASES = {

            'default': {

                  'ENGINE': 'django.db.backends.mysql',# Add 'postgresql_psycopg2','mysql', 'sqlite3' or 'oracle'

                  'NAME': 'mydb',                    # Your db name, Or path to database file if using sqlite3

                  'USER':'root',                        # Your db user name, Not used with sqlite3

                  'PASSWORD':'mysql123',    #  Your db password, Not used with sqlite3

                  'HOST':'',                              #  Your db host, set to empty string('') for default for localhost,  Not used with sqlite3

                  'PORT':'3306',                      #  Your db port, set to empty string('') for default, Not used with sqlite3

            }

        }

    2、进行数据迁移

    进入项目地址(与manage.py同级),执行如下命令

    python38 manage.py makemigrations# 创建 迁移

    python38 manage.py migrate# 执行 迁移

    3、执行完毕后,可在mysql指定的数据库中看到已经完成迁移的数据表,至此,mysql数据库配置完成

    C:\mysite001>python38   manage.py    dbshell

        mysql>  use mydb

        Database changed

        mysql>  show tables;

        mysql>  desc  blog_BlogInfo;


    在第一步之后一直报错

    尝试了添加环境变量

    尝试了修改my.ini,我路径下面没有,自己建了一个

    [mysqld]

    basedir ="C:\Program Files\MySQL\MySQL Server 8.0"

    datadir ="C:\Program Files\MySQL\MySQL Server 8.0\data"

    port=3306

    server_id =10

    character-set-server=gbk

    character_set_filesystem=gbk

    [client]

    port=3306

    default-character-set=gbk

    [mysqld_safe]

    timezone="CST"

    [mysql]

    default-character-set=utf8

    尝试了安装pip3 install mysqlclient --user

    尝试了修改python3.6/site-packages/django/db/backends/mysql/opetions.py

    将decode改为encode,代码为:

    def last_executed_query(self, cursor, sql, params):

        # With MySQLdb, cursor objects have an (undocumented) "_executed"

        # attribute where the exact query sent to the database is saved.

        # See MySQLdb/cursors.py in the source distribution.

        query = getattr(cursor, '_executed', None)

        if query is not None:

            query = query.encode(errors='replace')

        return query

    一直没解决,重启了下电脑,发现net start mysql又启动不了了,啊啊啊啊啊

    但是python38   manage.py    dbshell换了个错报:

    ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost:3306' (10061)

    CommandError: "mysql --user=root --host=localhost --port=3306 POI_DB_Users" returned non-zero exit status 1.

    把data删了,再按这个来一遍,net start mysql又能启动了:https://blog.csdn.net/qq_56572867/article/details/122560555

    然后也按这个教程把密码改了,然后就好了。

    查看mysql的端口号:

    相关文章

      网友评论

          本文标题:Django配置mysql数据库

          本文链接:https://www.haomeiwen.com/subject/fbwtsrtx.html