Python Flask框架学习笔记5
创始人
2025-05-31 19:45:48
0

1、Flask数据库:

数据库已安装成功。

 mysql可以自己查CSDN的操作进行安装。

2、Flask连接数据库:

Flask想要操作数据库,必须先安装python操作mysql的驱动。目前驱动包:

1)MySQL-python:MySQLdb,是C语言操作MySQL数据库的一个简单的封装。只支持Python2.

 2)mysqlclient: 支持python3,并修复了一些bug。是目前为止执行效率最高的驱动,安装的时候容易因为环境问题而出错。

3)pymysql: 纯Python实现的一个驱动,执行效率不如mysqlclient,但是和Python代码无缝衔接。

4)  mysql-connector-python: MySQL官方推荐的纯Python连接mysql的驱动。

安装pymysql:

Flask-SQLAlchemy:

在Flask中,我们很少会使用pymysql直接写原生的SQL语句去操作数据库,更多的是通过SQLAlchemy提供的ORM技术,类似操作普通Python对象一样去操作数据库的增删改查操作。而Flask-SQLAlchemy是对SQLAlchemy的一个封装,使得在Flask中使用SQLAlchemy更加方便。

pip install flask-sqlalchemy

Flask-SQLAlchemy基本使用:

from flask import Flask
from flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)HOSTNAME = "127.0.0.1"
PORT = 3306
USERNAME = "root"
PASSWORD = "123456"
DATABASE = "database_learn"app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8"# 在app.config设置好连接数据库的信息
# 然后使用SQLAlchemy(app)创建一个db对象
# SQLAlchemy会自动读取app.config中连接数据库的信息db = SQLAlchemy(app)with app.app_context():with db.engine.connect() as conn:rs = conn.execute(SQLAlchemy().text("select 1"))print(rs.fetchone())@app.route("/")
def hello_world():return 'hello world!'if __name__ == '__main__':app.run(debug=True)

 

 这是创建数据库连接。

或者更改代码:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import textapp = Flask(__name__)HOSTNAME = "127.0.0.1"
PORT = 3306
USERNAME = "root"
PASSWORD = "123456"
DATABASE = "database_learn"app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8"# 在app.config设置好连接数据库的信息
# 然后使用SQLAlchemy(app)创建一个db对象
# SQLAlchemy会自动读取app.config中连接数据库的信息db = SQLAlchemy(app)with app.app_context():with db.engine.connect() as conn:rs = conn.execute(text("select 1"))print(rs.fetchone())@app.route("/")
def hello_world():return 'hello world!'if __name__ == '__main__':app.run(debug=True)

ORM模型与表的创建:

ORM是对象关系映射,是一种可以用Python面向对象的方式来操作关系型数据库的技术。具有可以映射到数据库表能力的Python类我们称之为ORM模型。一个ORM模型和数据库中的一个表对应。

ORM技术提供了面向对象与SQL交互的桥梁,让开发者用面向对象的方式来操作数据库。

特点:开发效率高、安全性高、灵活性强。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import textapp = Flask(__name__)HOSTNAME = "127.0.0.1"
PORT = 3306
USERNAME = "root"
PASSWORD = "123456"
DATABASE = "database_learn"app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8"# 在app.config设置好连接数据库的信息
# 然后使用SQLAlchemy(app)创建一个db对象
# SQLAlchemy会自动读取app.config中连接数据库的信息db = SQLAlchemy(app)# with app.app_context():
#     with db.engine.connect() as conn:
#         rs = conn.execute(text("select 1"))
#         print(rs.fetchone())class User(db.Model):__tablename__ = 'user'id = db.Column(db.Integer, primary_key=True, autoincrement=True)username = db.Column(db.String(100), nullable=False)password = db.Column(db.String(100), nullable=False)# user = User(username="zhangsan", password="111111")
# sql: insert user(username, password) valus('zhangsan', '1111111')
with app.app_context():db.create_all()@app.route("/")
def hello_world():return 'hello world!'if __name__ == '__main__':app.run(debug=True)

那这段代码就将表创建起来了,通过navicat可以查看。

相关内容

热门资讯

避雷手册丨开局生猛!申万菱信乐... 2026年1月份刚刚过半,A股气势如虹,公募产品同样生猛。其中,申万菱信乐道三年持有在8个交易日就已...
罗永浩喊停,贾国龙再发声:他让... 红星资本局1月17日消息,今日晚间,针对与罗永浩的“预制菜之争”,贾国龙在朋友圈继续发文回应。贾国龙...
月产80万公斤,纺织巨头宣布破... 订阅 快刀财经 ▲ 做您的私人商学院土耳其纺织双雄陨落启示录。作者:吕敬之来源:融中财经(ID: t...
北方稀土预计去年净利润同比增超... 稀土龙头中国北方稀土(集团)高科技股份有限公司(下称“北方稀土”,600111.SH)最新公告披露,...
押宝哪吒,国潮又杀出第一股 9.9元一个的哪吒手办,能撑起一个40亿估值的港股IPO吗?作者 |胡杨来源 |投资家(ID:tou...
破解学历歧视,让普通学子拿高薪... 2026年初,中国正深陷于一场复杂的就业情绪之中。一面是创纪录的应届高校毕业生数量,让“学历贬值”、...
四川绵竹三大千亿园区布局:循环... 2026新年伊始,四川省人民政府重磅发布《关于推动城市高质量发展的实施意见》,文件明确提到,以城镇化...
70余只基金开年大涨超20%!... 2026年首月过半,已有权益类基金创造惊人收益。Wind数据显示,截至1月15日,有74只权益类基金...
来伊份年度预亏1.7亿元,拟用... 红星资本局1月17日消息,1月16日,来伊份(603777.SH)发布预亏公告,预计2025年度归母...
老贾,赢了么? 昨晚(1月16日),可能不少人原本计划看西贝创始人贾国龙的直播。网上文章也是铺天盖地的。但不想,就在...