1、Flask连接MySQL数据库
想使用flask中的SQLAlchemy操作数据库,首先要能连接上数据库,这里咱们新建一个config.py的配置文件,用来配置数据库连接,代码如下。
# encoding: utf-8
# dialect+driver://username:password@host:port/database
DIALECT = 'mysql' # 要用的什么数据库
DRIVER = 'pymysql' # 连接数据库驱动
USERNAME = 'root' # 用户名
PASSWORD ='root' # 密码
HOST = 'localhost' # 服务器
PORT ='3306' # 端口
DATABASE = 'db_demo2' # 数据库名
SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALECT, DRIVER, USERNAME, PASSWORD, HOST, PORT, DATABASE)
SQLALCHEMY_TRACK_MODIFICATIONS = False
这里配置好咱们的数据库连接。然后在app.py中导入咱们的数据库连接。代码如下。
# encoding: utf-8
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import config
app = Flask(__name__)
app.config.from_object(config)
db = SQLAlchemy(app)
db.create_all()
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
到这里咱们先测试运行一下,看不能不能连接上数据库。运行结果如下。
有一个警告,求助下小伙伴,知道怎么解决吗?MySQL数据中的类型都改成utf8了。嗯,至少数据库是连接成功了。记得连接之前一定要先创建一个数据库。
create database db_demo2
2.使用flask-SQLAlchemy创建模型与表的映射
数据库连接已经创建好了,SQLAlchemy的实例也已经写好了,就是db。然后定义一个类。
class Article(db.Model):
__tablename__ = 'article'
id = db.Column(db.INTEGER, primary_key=True, autoincrement=True)
title = db.Column(db.String(100), nullable=False)
content = db.Column(db.Text, nullable=False)
这里咱们定义一个Article的类,继承自SQLAlchemy里面的Model。然后定义表名。
- id,int类型,主键,自增长。
- title varchar类型 长度100 非空
- content Text类型 非空
咱们先看下数据库。
执行show tables
可以看到还没有表。
然后执行咱们的app.py,代码如下。
# encoding: utf-8
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import config
app = Flask(__name__)
app.config.from_object(config)
db = SQLAlchemy(app)
class Article(db.Model):
__tablename__ = 'article'
id = db.Column(db.INTEGER, primary_key=True, autoincrement=True)
title = db.Column(db.String(100), nullable=False)
content = db.Column(db.Text, nullable=False)
db.create_all()
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
看下结果;
show tables # 查看该数据库下所有的表
desc article # 查看article表下所有的字段及类型
可以看到,咱们的代码已经执行成功了。
Study hard and make progress every day.
更多学习资料请关注"爱游戏爱编程"。