鍍金池/ 問答/Python  數(shù)據(jù)庫/ OS環(huán)境下 pycharm連接mysql數(shù)據(jù)庫 執(zhí)行文件出錯

OS環(huán)境下 pycharm連接mysql數(shù)據(jù)庫 執(zhí)行文件出錯

python版本為3.5,mysql版本為5.7.21,
create database: py4e
create table: PymySqlTest,

安裝pymysql

pip3 install pymysql

提示

Requirement already satisfied: pymysql in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages

在pycharm項目里通過 Preference-> 我的project -> ..Intepreter 安裝 pymysql

在mysqldb創(chuàng)建table,開啟權(quán)限

GRANT ALL PRIVILEGES ON PY4E.* TO 'root'@'localhost' IDENTIFIED BY 'pswd' WITH GRANT OPTION; 

SHOW GRANTS FOR 'root'@'localhost';

FLUSH PRIVILEGES;

在Pycharm中測試

#!/usr/bin/env python3

# GRANT ALL PRIVILEGES ON tablename.* TO 'root'@'localhost' IDENTIFIED BY 'root' WITH GRANT OPTION;
# FLUSH PRIVILEGES;


import pymysql

# Connect to the database
connection = pymysql.connect(host='127.0.0.1',
                             user='root',
                                 password='root',
                                 db='db',
                                 charset='utf8mb4',
                                 cursorclass=pymysql.cursors.DictCursor)

try:
    with connection.cursor() as cursor:
        # Create a new record
        sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
        cursor.execute(sql, ('webmaster@python.org', 'very-secret'))

    # connection is not autocommit by default. So you must commit to save
    # your changes.
    connection.commit()

    with connection.cursor() as cursor:
        # Read a single record
        sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s"
        cursor.execute(sql, ('webmaster@python.org',))
        result = cursor.fetchone()
        print(result)
finally:
    connection.close()

Hover on 執(zhí)行文件 pymysql 沒有提示出錯

執(zhí)行文件提示錯誤:

pymysql.err.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")

求解?

回答
編輯回答
毀憶

既然:

GRANT ALL PRIVILEGES ON PY4E.* TO 'root'@'localhost' IDENTIFIED BY 'pswd' WITH GRANT OPTION;

設(shè)置 passwordpswd
那么:

connection = pymysql.connect(host='127.0.0.1',
                             user='root',
                                 password='root',

這里的password就應(yīng)該是pswd, 而不是root.

2018年1月16日 01:18