下面我将详细讲解如何使用Python Flask和SQLAlchemy连接数据库,并提供两个示例说明。
Flask和SQLAlchemy连接数据库的流程
连接数据库是Web应用程序开发中非常重要的一部分。Python Flask框架提供了一个Python ORM库 - SQLAlchemy,帮助我们更便捷地连接数据库。
下面是Flask和SQLAlchemy连接数据库的主要步骤:
- 安装Flask和SQLAlchemy
Flask和SQLAlchemy都可以使用pip进行安装。在终端输入以下命令:
pip install Flask
pip install SQLAlchemy
- 创建Flask应用程序
下面是一个简单的Flask应用程序的代码示例:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello World'
if __name__ == '__main__':
app.run()
这个应用程序监听根URL('/'),并返回字符串“Hello World”。
- 创建数据库连接
在Flask应用程序中,您需要创建一个SQLAlchemy对象来连接数据库,并设置数据库引擎和连接参数。下面是一个示例:
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = '数据库引擎+连接参数'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), unique=True)
email = db.Column(db.String(120), unique=True)
def __init__(self, name, email):
self.name = name
self.email = email
def __repr__(self):
return '<User %r>' % self.name
上面的代码将会创建一个名为User的模型,用来映射到数据库中的一张表。在创建db对象时需要传入Flask应用程序对象,以便SQLAlchemy知道如何连接到数据库。SQLALCHEMY_DATABASE_URI
变量指示SQLAlchemy如何连接到数据库。
- 创建数据表
在Flask应用程序中创建数据库表与SQLAlchemy中的表的定义相同。下面是一个示例:
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = '数据库引擎+连接参数'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), unique=True)
email = db.Column(db.String(120), unique=True)
def __init__(self, name, email):
self.name = name
self.email = email
def __repr__(self):
return '<User %r>' % self.name
db.create_all()
db.create_all()
将会在数据库中创建User模型中定义的表。
- 向数据库添加数据
在Flask中使用SQLAlchemy添加数据,需要实例化模型并将其添加到数据库中。下面是一个示例:
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = '数据库引擎+连接参数'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), unique=True)
email = db.Column(db.String(120), unique=True)
def __init__(self, name, email):
self.name = name
self.email = email
def __repr__(self):
return '<User %r>' % self.name
db.create_all()
u = User('test', 'test@test.com')
db.session.add(u)
db.session.commit()
以上示例创建了一个名为u的User对象,并将其添加到数据库中。db.session.add()添加新的对象,db.session.commit()将这个对象保存到数据库。
- 在Flask应用程序中查询数据
在Flask应用程序中查询数据,需要使用其ORM查询语言。下面是一个示例:
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = '数据库引擎+连接参数'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), unique=True)
email = db.Column(db.String(120), unique=True)
def __init__(self, name, email):
self.name = name
self.email = email
def __repr__(self):
return '<User %r>' % self.name
db.create_all()
u = User('test', 'test@test.com')
db.session.add(u)
db.session.commit()
users = User.query.all()
for user in users:
print(user.name, user.email)
以上示例查询了数据库中的所有User对象,并输出每个对象的名称和电子邮件地址。
示例1:连接SQLite数据库
下面是一个连接SQLite数据库的代码示例:
from flask import Flask
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(50), unique=True)
email = db.Column(db.String(120), unique=True)
def __init__(self, name, email):
self.name = name
self.email = email
def __repr__(self):
return '<User %r>' % self.name
db.create_all()
u = User('test', 'test@test.com')
db.session.add(u)
db.session.commit()
users = User.query.all()
for user in users:
print(user.name, user.email)
在上面的示例中,只需将数据库URI更改为sqlite:///example.db
即可连接SQLite数据库。
示例2:连接MySQL数据库
下面是一个连接MySQL数据库的代码示例:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@host:port/dbname'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), unique=True)
email = db.Column(db.String(120), unique=True)
def __init__(self, name, email):
self.name = name
self.email = email
def __repr__(self):
return '<User %r>' % self.name
db.create_all()
u = User('test', 'test@test.com')
db.session.add(u)
db.session.commit()
users = User.query.all()
for user in users:
print(user.name, user.email)
在上面的示例中,只需将数据库URI更改为mysql+pymysql://username:password@host:port/dbname
即可连接MySQL数据库。
以上就是Python Flask和SQLAlchemy连接数据库的流程和示例说明。希望对您有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python flask sqlalchemy连接数据库流程介绍 - Python技术站