我想配置django项目,以便将其与使用 Workbench 8.0 创建的 MYSQL中的 数据库连接, 然后我要通过运行来运行服务器
python manage.py runserver
从anaconda命令提示符下输入, 这样我就可以使用Django界面来可视化和更改数据。 请注意,我不想降级Workbench 8.0。
这些是我已经执行的步骤:
在anaconda提示符下:
pip install mysqlclient
在我的项目文件夹的settings.py中
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'schema_meta', 'USER': 'root', 'PASSWORD': '<mypassword>', 'HOST': '127.0.0.1', 'PORT': '3306', }, }
在mysql服务器目录中,我打开cnf.ini并插入[client]部分:
[client] database=schema_meta host=127.0.0.1 user=root password=<mypassword> port=3306 default-character-set = utf8
然后从蟒蛇提示我运行
Python manage.py runserver
我得到错误
django.db.utils.OperationalError:(2059,“无法加载身份验证插件“ caching_sha2_password”:不可能通过特定模数传输。\ r \ n”)
因此,我尝试通过以下线程解决此问题: django.db.utils.operationalError:(2059,“身份验证插件’caching_sha2_password’”)
我打开mysql工作台,然后运行以下查询:
delete from mysql.user where user='root' and host = '127.0.0.1'; flush privileges; CREATE USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY '<mypassword>';
然后,在my.ini文件中,
default-authentication-plugin= caching_sha2_password
用
default-authentication-plugin=mysql_native_password
最后从anaconda提示符下:
但是我又得到了
现在,怎么了?为什么它没有将更改添加到身份验证方法中?
为了检查是否没有其他错误,从mysql工作台,从第一个“主页”视图,我右键单击数据库,打开“编辑连接”,单击“测试连接”,然后软件说连接成功。
mysql工作台说连接成功建立
此外,我想检查问题是否出在我的Django设置中。所以从anaconda提示我运行
pip install pymysql
然后在项目文件夹中创建了一个“ connect_to_mysql.py”脚本,其中包含以下代码:
import pymysql.cursors mydb = pymysql.connect(host='127.0.0.1', user='root', password='<mypassword>', db='schema_meta', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) print(mydb)
自从我跑步时,这似乎工作正常
connect_to_mysql.py
从水蟒,我得到
pymysql.connections.Connection对象位于0x000002013F2851D0
我猜这意味着“连接成功建立”。 并且为了确保问题出在mysql(我猜是mysql连接器)中,我创建了一个文件“ connect_to_mysql_2.py”,其中包含以下代码:
import mysql.connector mydb = mysql.connector.connect(user='root', password='<mypassword>', host='127.0.0.1', database='meta_schema') print(mydb)
当我从anaconda运行它时,我再次得到
“不支持身份验证插件’{0}’”。format(plugin_name))mysql.connector.errors.NotSupportedError:不支持身份验证插件’caching_sha2_password’
这意味着我无法通过使用mysql工作台和my.ini文件来解决任何问题。
如何使Django与mysql数据库连接并运行服务器?
有没有办法使用pymysql连接器代替mysql连接器来建立服务器连接器?
我想我解决了。
通过关注此线程
https://stackoverflow.com/a/21740692/7658051
在settings.py中的DATABASES条目中,我替换了
'ENGINE': 'django.db.backends.mysql'
与
'ENGINE': 'mysql.connector.django',
再次如此处指定
https://django-mysql.readthedocs.io/zh-CN/latest/checks.html#django- mysql-w003-utf8mb4
我也加了
'OPTIONS': { # Tell MySQLdb to connect with 'utf8mb4' character set 'charset': 'utf8mb4', }, # Tell Django to build the test database with the 'utf8mb4' character set 'TEST': { 'CHARSET': 'utf8mb4', 'COLLATION': 'utf8mb4_unicode_ci', }
然后如果我跑步
python manage.py运行服务器
即使我无法访问http://127.0.0.1:8000/admin,它也似乎可以正常工作,因为我已连接到旧版数据库,因此我仍然必须检查db和仍需学习的内容。
作为第二个证明,当我运行时,该连接现在正在工作
connect_to_mysql_2.py
(在Django上运行与MYSQL数据库连接的服务器时,请参阅(2059,“身份验证插件’caching_sha2_password’”))
我终于明白了
mysql.connector.connection_cext.CMySQLConnection对象位于0x000001DFB7521550
所以我真的认为这次连接已经打开。