Flask交流

八、使用flask-SQLAlchemy创建模型与表的映射

2018-09-04  本文已影响613人  十柒年

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()

到这里咱们先测试运行一下,看不能不能连接上数据库。运行结果如下。


image.png

有一个警告,求助下小伙伴,知道怎么解决吗?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。然后定义表名。

# 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()

看下结果;


image.png
show tables # 查看该数据库下所有的表
desc article # 查看article表下所有的字段及类型

可以看到,咱们的代码已经执行成功了。
Study hard and make progress every day.

更多学习资料请关注"爱游戏爱编程"。


爱游戏爱编程.jpg
上一篇 下一篇

猜你喜欢

热点阅读