Flask(flask-sqlalchemy)连接数据库

QLAlchemy是Python编程语言下的一款开源软件。提供了SQL工具包及对象关系映射(ORM)工具,使用MIT许可证发行。
SQLAlchemy“采用简单的Python语言,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型”。SQLAlchemy的理念是,SQL数据库的量级和性能重要于对象集合;而对象集合的抽象又重要于表和行。
SQLAlchemy是flask的一款数据库连接插件
使用以下命令安装包文件

pip install pymysql
pip install flask-sqlalchemy
  1. 首先配置app的属性,利用app.config[‘SQLALCHEMY_DATABASE_URI’]配置好flaskapp,之后调用db=SQLAlachemy(app)连接数据库。
  2. 用户自定义类继承db.model就是一张表,使用db.Column来定义一个属性,可以使用db.create_all()来将类生成表放入数据库。
  3. db.session实现数据库会话,可以进行增,删,改操作,执行db.commit后提交修改。
  4. flask-sqlalchemy提供外键等定义,可以用类的思路实现连表等操作。(但是熟悉SQL的话还是写SQL顺畅,如果要写原生sql需要用engine连接,连接返回的对象有execute方法可以执行原生SQL)
  5. 连接有问题可以尝试用.formate或者直接改字符串,有时候用f"{}"会出错不知道为什么
  6. 推荐使用flask-migrate来管理数据库,键入指令flask db migrate/flask db upgrade对ORM定义的数据库修改进行更新。
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# MySQL所在的主机名
HOSTNAME = ""
# MySQL监听的端口号,默认3306
PORT = 
# 连接MySQL的用户名,读者用自己设置的
USERNAME = ""
# 连接MySQL的密码,读者用自己的
PASSWORD = ""
# MySQL上创建的数据库名称
DATABASE = ""

app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8mb4"

# 在app.config中设置好连接数据库的信息,
# 然后使用SQLAlchemy(app)创建一个db对象
# SQLAlchemy会自动读取app.config中连接数据库的信息

db = SQLAlchemy(app)

# ORM ---- 一个类对应一张表
class User(db.Model):
    __tablename__ = "user"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    # varchar, null=0
    username = db.Column(db.String(100), nullable=False)
    password = db.Column(db.String(100), nullable=False)
    email = db.Column(db.String(100))
    signature = db.Column(db.String(100))

class Article(db.Model):
    __tablename__ = "article"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    title = db.Column(db.String(200), nullable=False)
    content = db.Column(db.Text, nullable=False)

    # 添加作者的外键
    author_id = db.Column(db.Integer, db.ForeignKey("user.id"))
    # backref:会自动的给User模型添加一个articles的属性,用来获取文章列表
    author = db.relationship("User", backref="articles")

# 这里用db.create_all(),以后可以使用flask-migrate自动生成迁移脚本
with app.app_context():
   db.create_all()

@app.route('/')
def hello_world():
    return 'Hello World!'

@app.route("/user/add")
def add_user():
    # 1. 创建ORM对象
    user = User(username="张三", password='1111')
    # 2. 将ORM对象添加到db.session中
    db.session.add(user)
    # 3. 将db.session中的改变同步到数据库中
    db.session.commit()
    return "用户创建成功!"

@app.route("/user/query")
def query_user():
    # 1. get查找:根据主键查找
    # user = User.query.get(1)
    # print(f"{user.id}: {user.username}-{user.password}")
    # 2. filter_by查找
    # Query:类数组
    users = User.query.filter_by(username="张三")
    for user in users:
        print(user.username)
    return "数据查找成功!"

@app.route("/user/update")
def update_user():
    user = User.query.filter_by(username="张三").first()
    user.password = "222222"
    db.session.commit()
    return "数据修改成功!"

@app.route('/user/delete')
def delete_user():
    # 1. 查找
    user = User.query.get(1)
    # 2. 从db.session中删除
    db.session.delete(user)
    # 3. 将db.session中的修改,同步到数据库中
    db.session.commit()
    return "数据删除成功!"

@app.route("/article/add")
def article_add():
    article1 = Article(title="Flask学习大纲", content="Flaskxxxx")
    article1.author = User.query.get(2)
    # 添加到session中
    db.session.add(article1)
    # 同步session中的数据到数据库中
    db.session.commit()
    return "文章添加成功!"

@app.route("/article/query")
def query_article():
    user = User.query.get(2)
    for article in user.articles:
        print(article.title)
    return "文章查找成功!"

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
连接MySQL数据库使用Flask-SQLAlchemy,首先需要安装pymysqlflask-sqlalchemy库。可以使用以下命令安装flask-sqlalchemy: ``` pip install flask-sqlalchemy ``` 在安装成功后,可以按照以下步骤进行flask-sqlalchemy连接MySQL数据库的配置: 1. 在Flask应用程序中导入必要的库和模块: ```python from flask import Flask from flask_sqlalchemy import SQLAlchemy ``` 2. 创建Flask应用程序对象: ```python app = Flask(__name__) ``` 3. 配置MySQL数据库连接参数: ```python app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@localhost:port/database_name' ``` 其中,username是你的MySQL用户名,password是你的MySQL密码,localhost是MySQL服务器地址,port是MySQL服务器端口,database_name是要连接数据库名。 4. 创建SQLAlchemy对象并将应用程序对象与数据库对象关联: ```python db = SQLAlchemy(app) ``` 5. 创建模型类来映射数据库表: ```python class Article(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable=False) content = db.Column(db.Text, nullable=False) ``` 在这个例子中,创建了一个名为Article的模型类,它有id、title和content三个字段,分别映射数据库表的id、title和content列。 6. 在应用程序中使用数据库: ```python @app.route('/') def index(): articles = Article.query.all() return render_template('index.html', articles=articles) ``` 在这个例子中,使用Article.query.all()查询了所有的文章,并将它们传递给模板渲染。 7. 最后,运行应用程序: ```python if __name__ == '__main__': app.run() ``` 这样就完成了Flask-SQLAlchemy连接MySQL数据库的配置和使用。通过以上步骤,你可以在Flask应用程序中使用SQLAlchemy来进行数据库的增删改查操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

volcanical

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值