0%

Python Flask配置mysql数据库及使用示例

我们在使用Flask搭建web网站时一定会用到数据库,下面我们简单了解一下Flask如何操作数据库,文章以Mysql为例进行连接操作

创建Flask

1
pip install flask

成功安装之后如app.py

1
2
3
4
5
6
7
8
9
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
return 'hello world'

if __name__ == '__main__':
app.run()

安装 sqlalchemy

1
pip install sqlalchemy

2.1 新建文件 config.py

1
2
3
4
5
6
7
8
9
10
11
12
DIALECT = 'mysql'
DRIVER = 'pymysql'
USERNAME = 'root'
PASSWORD = '****'
HOST = '127.0.0.1'
PORT = '3306'
DATABASE = '数据库名'

#mysql 不会认识utf-8,而需要直接写成utf8
SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALECT,DRIVER,USERNAME,PASSWORD,HOST,PORT,DATABASE)
SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMY_ECHO = True

新建文件 exts.py

1
2
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()

建数据模型

新建model.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from exts import db

class EntityBase(object):
def to_json(self):
fields = self.__dict__
if "_sa_instance_state" in fields:
del fields["_sa_instance_state"]
return fields

class User(db.Model, EntityBase):
#数据表明、字段
__tablename__ = 'tp_user'
id = db.Column(db.Integer, primary_key=True)
token = db.Column(db.String(20))
mobile = db.Column(db.String(20))
head = db.Column(db.String(100))
nickName = db.Column(db.String(100))
status = db.Column(db.Date)

使用数据库

新建user文件夹,文件 index.py
2020121314062653.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from flask import Blueprint, jsonify
from model import User
user = Blueprint('user', __name__);

@user.route('/list')
def list_users():
users = User.query.all()
print(users)
users_output = []
for user in users:
users_output.append(user.to_json())
return jsonify(users_output)

@user.route('/details/<userid>')
def find_user(userid):
user = User.query.get(userid)
return jsonify(user.to_json())

引用

app.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from flask import Flask
#引用数据库启动文件
from exts import db
#引用数据库配置文件
import config
#引用数据库
from user.index import *

app = Flask(__name__)
app.config.from_object(config)
db.init_app(app)
//引用模型
app.register_blueprint(user, url_prefix="/user")

if __name__ == '__main__':
app.run(debug=True)

第七步启动

1
python -m flask run

20201213135550525.png
浏览器访问 http://127.0.0.1:5000/user/list
2020121313563080.png

遇到的问题

问题1

在虚拟环境terminal终端中已经安装了包,但是运行的时候还是报错:No module named ‘flask_sqlalchemyl’

在pycharm这个perference这个页面,手动添加包即可:
2020092520264623.png

问题2

python操作Mysql(ModuleNotFoundError: No module named ‘pymysql’)
下载方式两种:
1、首先下载Mysql库:https://github.com/PyMySQL/PyMySQL
下载好在进入文件夹shift+鼠标右击进入cmd命令,输入

1
python setup.py install

这就已经安装好了pymysql

2、进入cmd,执行pip install pymysql,或者直接按照问题1中的方式直接在pycharm安装也是可以的

然后进入pycharm测试操作一下pymysql是否能够连接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import pymysql

print("================测试是否连通====================")
try:
conn = pymysql.connect(host='localhost', user='root', passwd='123', db='db_pro', port=3306, charset='utf8')
cur = conn.cursor()
cur.execute('select version()')
version = cur.fetchone()
print(version)
cur.close()
conn.close()
except Exception:
print("发生异常")


1
2
版权声明:本文为CSDN博主「北楷」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40111696/article/details/111102139