189 8069 5689

Python框架之Django的数据库配置问题-创新互联

准备开始python的环境,用django框架其默认的数据库是sqlite3 ,要改用mysql来存储数据

创新互联从2013年创立,先为元宝山等服务建站,元宝山等地企业,进行企业商务咨询服务。为元宝山企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

在执行migrate的时候出现问题(错误见末尾):

Unhandled exception in thread started by .wrapper

 at 0x031BD6F0>

Traceback (most recent call last):

 File "C:\Python36\lib\site-packages\django\db\backends\base\base.py", line 213

, in ensure_connection

  self.connect()

 File "C:\Python36\lib\site-packages\django\db\backends\base\base.py", line 189

, in connect

  self.connection = self.get_new_connection(conn_params)

 File "C:\Python36\lib\site-packages\django\db\backends\mysql\base.py", line 27

4, in get_new_connection

  conn = Database.connect(**conn_params)

 File "C:\Python36\lib\site-packages\MySQLdb\__init__.py", line 86, in Connect

  return Connection(*args, **kwargs)

 File "C:\Python36\lib\site-packages\MySQLdb\connections.py", line 204, in __in

it__

  super(Connection, self).__init__(*args, **kwargs2)

_mysql_exceptions.OperationalError: (1045, "Access denied for user 'ODBC'@'local

host' (using password: YES)")

The above exception was the direct cause of the following exception:

Traceback (most recent call last):

 File "C:\Python36\lib\site-packages\django\utils\autoreload.py", line 227, in

wrapper

  fn(*args, **kwargs)

 File "C:\Python36\lib\site-packages\django\core\management\commands\runserver.

py", line 125, in inner_run

  self.check(display_num_errors=True)

 File "C:\Python36\lib\site-packages\django\core\management\base.py", line 359,

 in check

  include_deployment_checks=include_deployment_checks,

 File "C:\Python36\lib\site-packages\django\core\management\base.py", line 346,

 in _run_checks

  return checks.run_checks(**kwargs)

 File "C:\Python36\lib\site-packages\django\core\checks\registry.py", line 81,

in run_checks

  new_errors = check(app_configs=app_configs)

 File "C:\Python36\lib\site-packages\django\core\checks\model_checks.py", line

30, in check_all_models

  errors.extend(model.check(**kwargs))

 File "C:\Python36\lib\site-packages\django\db\models\base.py", line 1282, in c

heck

  errors.extend(cls._check_fields(**kwargs))

 File "C:\Python36\lib\site-packages\django\db\models\base.py", line 1357, in _

check_fields

  errors.extend(field.check(**kwargs))

 File "C:\Python36\lib\site-packages\django\db\models\fields\__init__.py", line

 909, in check

  errors = super(AutoField, self).check(**kwargs)

 File "C:\Python36\lib\site-packages\django\db\models\fields\__init__.py", line

 219, in check

  errors.extend(self._check_backend_specific_checks(**kwargs))

 File "C:\Python36\lib\site-packages\django\db\models\fields\__init__.py", line

 322, in _check_backend_specific_checks

  return connections[db].validation.check_field(self, **kwargs)

 File "C:\Python36\lib\site-packages\django\db\backends\mysql\validation.py", l

ine 49, in check_field

  field_type = field.db_type(self.connection)

 File "C:\Python36\lib\site-packages\django\db\models\fields\__init__.py", line

 640, in db_type

  return connection.data_types[self.get_internal_type()] % data

 File "C:\Python36\lib\site-packages\django\utils\functional.py", line 35, in _

_get__

  res = instance.__dict__[self.name] = self.func(instance)

 File "C:\Python36\lib\site-packages\django\db\backends\mysql\base.py", line 17

4, in data_types

  if self.features.supports_microsecond_precision:

 File "C:\Python36\lib\site-packages\django\utils\functional.py", line 35, in _

_get__

  res = instance.__dict__[self.name] = self.func(instance)

 File "C:\Python36\lib\site-packages\django\db\backends\mysql\features.py", lin

e 53, in supports_microsecond_precision

  return self.connection.mysql_version >= (5, 6, 4) and Database.version_info

>= (1, 2, 5)

 File "C:\Python36\lib\site-packages\django\utils\functional.py", line 35, in _

_get__

  res = instance.__dict__[self.name] = self.func(instance)

 File "C:\Python36\lib\site-packages\django\db\backends\mysql\base.py", line 38

5, in mysql_version

  with self.temporary_connection() as cursor:

 File "C:\Python36\lib\contextlib.py", line 82, in __enter__

  return next(self.gen)

 File "C:\Python36\lib\site-packages\django\db\backends\base\base.py", line 591

, in temporary_connection

  cursor = self.cursor()

 File "C:\Python36\lib\site-packages\django\db\backends\base\base.py", line 254

, in cursor

  return self._cursor()

 File "C:\Python36\lib\site-packages\django\db\backends\base\base.py", line 229

, in _cursor

  self.ensure_connection()

 File "C:\Python36\lib\site-packages\django\db\backends\base\base.py", line 213

, in ensure_connection

  self.connect()

 File "C:\Python36\lib\site-packages\django\db\utils.py", line 94, in __exit__

  six.reraise(dj_exc_type, dj_exc_value, traceback)

 File "C:\Python36\lib\site-packages\django\utils\six.py", line 685, in reraise

  raise value.with_traceback(tb)

 File "C:\Python36\lib\site-packages\django\db\backends\base\base.py", line 213

, in ensure_connection

  self.connect()

 File "C:\Python36\lib\site-packages\django\db\backends\base\base.py", line 189

, in connect

  self.connection = self.get_new_connection(conn_params)

 File "C:\Python36\lib\site-packages\django\db\backends\mysql\base.py", line 27

4, in get_new_connection

  conn = Database.connect(**conn_params)

 File "C:\Python36\lib\site-packages\MySQLdb\__init__.py", line 86, in Connect

  return Connection(*args, **kwargs)

 File "C:\Python36\lib\site-packages\MySQLdb\connections.py", line 204, in __in

it__

  super(Connection, self).__init__(*args, **kwargs2)

django.db.utils.OperationalError: (1045, "Access denied for user 'ODBC'@'localho

st' (using password: YES)")

这里很奇怪为什么我配置的用户是 admin_py 怎么会显示 ‘ODBC’@‘localhost’?

有人说是账号密码错误,通过报错看来的和账号密码错误相关,但是手工去登陆mysql是OK的啊!

折腾了一会儿,仔细看官方文档配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'mydatabase',
        'USER': 'mydatabaseuser',
        'PASSWORD': 'mypassword',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }}

我自己的配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'NAME': 'platform_admin_py',
        'USERNAME': 'admin_py',
        'PASSWORD': 'admin',
    }
}

发现了没有?用户名的的那个KEY不对! 我承认我这是从网上看别人的配置写的,偷懒了,这就是代价

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享名称:Python框架之Django的数据库配置问题-创新互联
文章网址:http://cdxtjz.cn/article/cdjdjd.html

其他资讯