优草派 > 问答 > Python

Python的Flask框架与数据库连接的教程

作者:wing3355     

随着数据爆炸式增长,对于数据的存储和处理需求愈发迫切。而数据库作为数据的重要存储方式,在现代应用中得到了广泛的应用。如何在Python应用中使用数据库,是Python开发者需要掌握的重要技能之一。本文主要介绍如何使用Flask框架连接数据库,并提供一个简单的示例。

一、Flask框架简介

Flask是一个基于Python的轻量级Web应用框架,它的设计目标是使得开发Web应用更加简单和快速。Flask不依赖于任何第三方库,但是它的扩展库十分丰富,可以满足各种需求。

二、数据库连接方式

Python中操作数据库的方式有很多,比如提供了原生的SQLite3模块,可以直接操作SQLite数据库;同时,Python也提供了ORM框架,例如SQLAlchemy,可以将Python对象映射到数据库表中。在使用Flask框架时,可以结合这些方式进行数据库连接。

1. 原生SQLite3模块的使用

在Python中使用SQLite3模块连接数据库非常简单,只需要调用sqlite3.connect()方法即可。示例代码如下:

```

import sqlite3

conn = sqlite3.connect('example.db')

c = conn.cursor()

# 创建表

c.execute('''CREATE TABLE users

(id INT PRIMARY KEY NOT NULL,

name TEXT NOT NULL,

age INT NOT NULL);''')

# 插入数据

c.execute("INSERT INTO users (id, name, age) VALUES (1, 'Tom', 18)")

# 查询数据

c.execute("SELECT * FROM users")

print(c.fetchall())

# 关闭连接

conn.close()

```

2. SQLAlchemy的使用

SQLAlchemy是Python中最流行的ORM框架之一,它可以将Python对象映射到数据库表中。使用SQLAlchemy时,我们需要先安装SQLAlchemy库,然后配置数据库连接信息。示例代码如下:

```

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'

db = SQLAlchemy(app)

# 创建模型

class User(db.Model):

id = db.Column(db.Integer, primary_key=True)

name = db.Column(db.String(80), nullable=False)

age = db.Column(db.Integer, nullable=False)

def __repr__(self):

return '' % self.name

# 创建表

db.create_all()

# 插入数据

user = User(id=1, name='Tom', age=18)

db.session.add(user)

db.session.commit()

# 查询数据

users = User.query.all()

print(users)

```

三、Flask连接数据库的配置

在使用Flask连接数据库之前,我们需要先配置数据库连接信息。Flask提供了一个配置对象app.config,可以通过app.config来配置数据库连接信息。示例代码如下:

```

from flask import Flask

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'

db = SQLAlchemy(app)

```

这里我们指定了数据库的URI,Flask会自动根据URI来连接数据库。如果需要连接其他类型的数据库,只需要修改URI即可。

四、Flask连接多个数据库

在实际开发中,有时候需要连接多个数据库。Flask提供了一个多数据库连接机制,可以连接多个数据库。示例代码如下:

```

from flask import Flask

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['SQLALCHEMY_BINDS'] = {

'users': 'sqlite:///users.db',

'products': 'sqlite:///products.db'

}

db = SQLAlchemy(app)

# 使用users数据库

class User(db.Model):

__bind_key__ = 'users'

id = db.Column(db.Integer, primary_key=True)

name = db.Column(db.String(80), nullable=False)

age = db.Column(db.Integer, nullable=False)

def __repr__(self):

return '' % self.name

# 使用products数据库

class Product(db.Model):

__bind_key__ = 'products'

id = db.Column(db.Integer, primary_key=True)

name = db.Column(db.String(80), nullable=False)

price = db.Column(db.Float, nullable=False)

def __repr__(self):

return '' % self.name

```

这里我们通过app.config['SQLALCHEMY_BINDS']来指定多个数据库的URI,然后在模型中通过__bind_key__来指定使用哪个数据库。

五、Flask连接数据库的包装

在使用Flask连接数据库时,我们可以使用一个包装类来简化操作。示例代码如下:

```

from flask import Flask

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'

db = SQLAlchemy(app)

class Database:

def __init__(self, app=None):

self.app = app

if app is not None:

self.init_app(app)

def init_app(self, app):

self.db = SQLAlchemy(app)

db = Database(app)

# 使用users数据库

class User(db.db.Model):

id = db.db.Column(db.db.Integer, primary_key=True)

name = db.db.Column(db.db.String(80), nullable=False)

age = db.db.Column(db.db.Integer, nullable=False)

def __repr__(self):

return '' % self.name

# 使用products数据库

class Product(db.db.Model):

id = db.db.Column(db.db.Integer, primary_key=True)

name = db.db.Column(db.db.String(80), nullable=False)

price = db.db.Column(db.db.Float, nullable=False)

def __repr__(self):

return '' % self.name

```

这里我们定义了一个Database类来包装SQLAlchemy,然后在模型中使用db.db来访问数据库。

六、总结

本文介绍了使用Flask连接数据库的几种方式,包括原生SQLite3模块和SQLAlchemy框架的使用方法,以及Flask连接多个数据库和使用包装类的方法。通过本文的学习,读者可以掌握Flask连接数据库的基本操作,为后续的开发工作打下基础。

5天短视频训练营
新手入门剪辑课程,零基础也能学
分享变现渠道,助你兼职赚钱
限时特惠:0元
立即抢
新手剪辑课程 (精心挑选,简单易学)
第一课
新手如何学剪辑视频? 开始学习
第二课
短视频剪辑培训班速成是真的吗? 开始学习
第三课
不需要付费的视频剪辑软件有哪些? 开始学习
第四课
手机剪辑app哪个好? 开始学习
第五课
如何做短视频剪辑赚钱? 开始学习
第六课
视频剪辑接单网站APP有哪些? 开始学习
第七课
哪里可以学短视频运营? 开始学习
第八课
做短视频运营需要会什么? 开始学习
相关问题
sql判断字段是否存在
python键值对
for循环可以遍历字典吗
怎么使用vscode
查看更多

客服热线:0731-85127885

湘ICP备19005950号-1  

工商营业执照信息

违法和不良信息举报

举报电话:0731-85127885 举报邮箱:tousu@csai.cn

优草派  版权所有 © 2024