Flask 学习2 连接数据库

项目目录结构参见 学习1
接下来开始连接mysql数据库的相关配置。
1、在 config.py 文件中增加数据库连接字符串
以下是示例:

import os
basedir = os.path.abspath(os.path.dirname(__file__))

class Config:
	SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string'
	SQLALCHEMY_COMMIT_ON_TEARDOWN = True
	FLASKY_MAIL_SUBJECT_PREFIX = '[Flasky]'
	FLASKY_MAIL_SENDER = 'Flasky Admin <[email protected]>'
	FLASKY_ADMIN = os.environ.get('FLASKY_ADMIN')
	@staticmethod
	def init_app(app):
		pass
		
class DevelopmentConfig(Config):
	DEBUG = True
	MAIL_SERVER = 'smtp.googlemail.com'
	MAIL_PORT = 587
	MAIL_USE_TLS = True
	MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
	MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
	SQLALCHEMY_DATABASE_URI = os.environ.get('DEV_DATABASE_URL') or \
		'sqlite:///' + os.path.join(basedir, 'data-dev.sqlite')

class TestingConfig(Config):
	TESTING = True
	SQLALCHEMY_DATABASE_URI = os.environ.get('TEST_DATABASE_URL') or \
		'sqlite:///' + os.path.join(basedir, 'data-test.sqlite')
		
class ProductionConfig(Config):
	SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
		'sqlite:///' + os.path.join(basedir, 'data.sqlite')

config = {
	'development': DevelopmentConfig,
	'testing': TestingConfig,
	'production': ProductionConfig,
	'default': DevelopmentConfig
}

配置类可以定义init_app() 类方法,其参数是程序实例。在这个方法中,可以执行对当前
环境的配置初始化。现在,基类Config 中的init_app() 方法为空。

2、在 app/__init__.py 文件中增加相关配置:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy	//新增加的内容
from config import config	//新增加的内容

db = SQLAlchemy()	//新增加的内容

def create_app():
    from .main import main as main_blueprint
    app = Flask(__name__)
    app.config.from_object(config['development'])	//新增加的内容
    config['development'].init_app(app)		//新增加的内容
    app.register_blueprint(main_blueprint)

    db.init_app(app)	//新增加的内容

    return app

备注1:flask中连接MySQL出现ModuleNotFoundError: No module named 'MySQLdb’错误
解决方法:先安装pymysql:pip install pymysql,然后在配置SQLALCHEMY_DATABASE_URI时,加上一个pymysql就可以了:
app.config[‘SQLALCHEMY_DATABASE_URI’] = ‘mysql+pymysql://root:dzd123@localhost/你的数据库名’
更新:
使用pymysql驱动,执行查询语句的时候,报出Warning: (1366, "Incorrect string value: '\\xD6\\xD0\\xB9\\xFA\\xB1\\xEA...' for column 'VARIABLE_VALUE' at row 481")的错误,查询数据库编码是utf8没有问题。根据有些资料提示将pymysql换成了mysql官方驱动程序 mysql-connector-python,执行命令pip install mysql-connector-python安装,然后在配置SQLALCHEMY_DATABASE_URI的时候,将之前的 mysql+pymysql 改成 mysql+mysqlconnector即可。
顺便将mysql的utf8字符集改成了utf8mb4

猜你喜欢

转载自blog.csdn.net/ezgame/article/details/85218356
今日推荐