错误代码为:
mysql.connector.errors.DatabaseError: 2017 (HY000): 无法打开命名管道到主机:。管道:MySQL (2)
我在 MySQL Workbench 设置中看不出这个错误的原因。
db.py:
import mysql.connector
import click
from flask import current_app, g
from flask.cli import with_appcontext
from .schema import instructions
def get_db():
if 'db' not in g:
g.db = mysql.connector.connect(
host=current_app.config['DATABASE_HOST'],
user=current_app.config['DATABASE_USER'],
password=current_app.config['DATABASE_PASSWORD'],
database=current_app.config['DATABASE']
)
g.c = g.db.cursor(dictionary=True)
return g.db, g.c
def close_db(e=None):
db = g.pop('db', None)
if db is not None:
db.close()
def init_db():
db, c = get_db()
for i in instructions:
c.execute(i)
db.commit()
@click.command('init-db')
@with_appcontext
def init_db_command():
init_db()
click.echo('Base de datos inicializada')
def init_app(app):
app.teardown_appcontext(close_db)
app.cli.add_command(init_db_command)
init.py(init变成了一个“____”:
import os
from flask import Flask
def create_app():
app = Flask(__name__)
app.config.from_mapping(
SECRET_KEY='mikey',
DATABASE_HOST=os.environ.get('FLASK_DATABASE_HOST'),
DATABASE_PASSWORD=os.environ.get('FLASK_DATABASE_PASSWORD'),
DATABASE_USER=os.environ.get('FLASK_DATABASE_USER'),
DATABASE=os.environ.get('FLASK_DATABASE'),
)
from . import db
db.init_app(app)
@app.route('/hola')
def hola():
return 'Happy Pig'
return app
Schema.py:
instructions = [
'SET FOREIGN_KEY_CHECKS=0;',
'DROP TABLE IF EXIST todo;',
'DROP TABLE IF EXIST user;',
'SET FOREIGN_KEY_CHECKS=1:',
"""
CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) UNIQUE NOT NULL,
password VARCHAR(100) NOT NULL
)
""",
"""
CREATE TABLE todo(
id INT PRIMARY KEY AUTO_INCREMENT,
created_by INT NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
description TEXT NOT NULL,
completed BOOLEAN NOT NULL,
FOREIGN KEY (created_by) REFERENCES user (id)
);
"""
]