• flask 链接mysql数据库 小坑


    #config.py
    
    
    MYSQL_NAME = 'root'
    MYSQL_PASSWORD = 'zyms90bdcs'
    MYSQL_HOST = 'xxxx'
    MYSQL_POST = '3306'
    MYSQL_DBNAME = 'flask_sql'
    MYSQL_CHARSET = 'utf8'
    
    # SQLALCHEMY_DATABASE_URI = 'mysql://{}:{}@{}:{}/{}?charset={}'.format(MYSQL_NAME,MYSQL_PASSWORD,
    #                                                                      MYSQL_HOST,MYSQL_POST,
    #                                                                      MYSQL_DBNAME,MYSQL_CHARSET)
    
    SQLALCHEMY_DATABASE_URI = 'mysql://{}:{}@{}:{}/{}'.format(MYSQL_NAME,MYSQL_PASSWORD,
                                                                         MYSQL_HOST,MYSQL_POST,
                                                                         MYSQL_DBNAME)

    这是链接数据库文件的配置,如果你在models文件中创建了db表,并进行创建 (shell还是直接路由进行创建) create_all()

    #models
    
    import pymysql
    from flask_sqlalchemy import SQLAlchemy
    
    pymysql.install_as_MySQLdb()
    
    db = SQLAlchemy()
    
    def init_db(app):
        db.init_app(app)
    
    
    class User(db.Model):
        __tablename__ = 'user'
    
        id = db.Column(db.Integer,primary_key=True,autoincrement=True)
        u_name = db.Column(db.String(20),unique=True)
        u_id = db.Column(db.Integer,unique=True)

    # 创建一个 User 的模型,数据库中创建一个 user 的表 

    # views.py
    
    from flask import Blueprint
    from App.models import User, db
    
    blue = Blueprint('base1',__name__)
    
    
    @blue.route('/create_all/')
    def create_all():
    
        db.create_all()
    
        return "DB create success"

    很容易出现一个问题 

    sqlalchemy.exc.InternalError: (InternalError) (1049, "Unknown database 'dome'") None None

    有过学过mysql的都会知道,但基础不好的会遇到.

    原因是

    create_all()
    这个函数只是创建表,并不创建数据





    更新还有一个坑
    当你开开心心完成了上述操作,再次打开(我的方式)创建表发型又出现问题了
    ModuleNotFoundError
    ModuleNotFoundError: No module named 'MySQLdb'

    看在明显是mysqldb 出现问题了,但是我们没有包叫mysqldb啊 只有mysql

    终于在网上找到 可能是pymysql 出现问题

    在models.py文件中  或者配置文件中也行

    import pymysql
    pymysql.install_as_MySQLdb()

    或者在

    MYSQL_NAME = 'root'
    MYSQL_PASSWORD = 'zyms90bdcs'
    MYSQL_HOST = 'xxxxx'
    MYSQL_POST = '3306'
    MYSQL_DBNAME = 'flask_sql'
    SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://{}:{}@{}:{}/{}'.format(MYSQL_NAME,MYSQL_PASSWORD,
                                                                         MYSQL_HOST,MYSQL_POST,
                                                                         MYSQL_DBNAME)
    
    
    app.config['SQLALCHEMY_DATABASE_URI'] = config.SQLITE_URI

    在mysql路径中增加一个驱动 +pymsql  字段

    sqlite 不需要

  • 相关阅读:
    使用jq.lazyload.js,解决设置loading图片的问题
    Write your first jQuery plugin
    如何在Less中使用使用calc
    web页面在ios下不支持fixed可用absolute替代的方案
    JavaScript内存优化
    js监听文本框内容变化
    动态绑定事件on
    CSS秘密花园:多边框
    2020—2021—1学期20202405《网络空间安全导论》第一周学习总结
    2020—2021—1学期20202405《网络空间安全导论》第五周学习总结
  • 原文地址:https://www.cnblogs.com/zengxm/p/11129864.html
Copyright © 2020-2023  润新知