#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 不需要