当前位置:优草派 > 问答 > Python问答

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

标签: Python  Python开发  Python  作者: 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连接数据库的基本操作,为后续的开发工作打下基础。

TOP 10
  • 周排行
  • 月排行