💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
Flask-SQLAlchemy 是 Flask 的一个扩展,它使得 Flask 用户能够方便无阻的使用 SQLAlchemy,而 SQLAlchemy 是 Python 最广泛使用的 ORM(对象关系映射)框架。 ORM 是一种让开发者以面向对象的方式操作数据库的技术,无需写 SQL 语句就可以进行数据的增删改查等操作。 Flask-SQLAlchemy 封装了 SQLAlchemy,并提供了更易用的 API。它还添加了一些其他有用的功能,如为 Flask 应用配置不同的数据库连接和提供模型基类等。 以下是一个简单的 Flask-SQLAlchemy 例子: 首先,你需要安装 Flask-SQLAlchemy: bash Copy code pip install flask-sqlalchemy 然后,在你的 Flask 应用代码中: python Copy code from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db' # 设置数据库 URI db = SQLAlchemy(app) # 初始化 SQLAlchemy 对象 #定义一个模型,模型必须继承自 db.Model class User(db.Model): id = db.Column(db.Integer, primary_key=True) # id 列,主键 username = db.Column(db.String(80), unique=True, nullable=False) # username 列 @app.route('/') def index(): admin = User(username='admin') # 新建一个 User 对象 db.session.add(admin) # 添加到 session db.session.commit() # commit 会话 return 'Hello, World!' if __name__ == '__main__': db.create_all() # 创建所有的表 app.run() 这个程序会创建一个 SQLite 数据库,并在其中创建一个用户表,在访问 '/' 路径时,会添加一个新的用户 "admin" 并保存到数据库。 注意:在真实的应用环境中,你应该安排一个合理的地方来进行数据库的初始化操作(db.create_all()),并且要确保所有数据库的操作(db.session.add(), db.session.commit())都在异常处理框架中进行。 ## Oracle Flask-SQLAlchemy 可以很容易地与 Oracle 数据库一起使用。你只需要提供合适的数据库 URI,然后 Flask-SQLAlchemy 就会处理剩下的事情。 首先,确保你已经安装了 cx_Oracle 这个库,它是 Python 访问 Oracle 数据库的接口。你可以使用 pip 来进行安装: sh Copy code pip install cx_Oracle 然后,在你的 Flask 应用代码中,你可以像这样配置你的 Oracle 数据库连接: python Copy code from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) # 格式:oracle+cx_oracle://user:password@hostname/sid app.config['SQLALCHEMY_DATABASE_URI'] = 'oracle+cx_oracle://username:password@hostname/dbname' db = SQLAlchemy(app) # your application code here if __name__ == '__main__': app.run() 在这个示例中,你需要将 username, password, hostname, dbname 替换为你自己 Oracle 数据库的用户名,密码,主机名和数据库名称。 然后你就可以像使用其他数据库一样使用 SQLAlchemy 了。SQLAlchemy 会自动处理 SQL 语句的生成和执行,它还提供了一个高级的 ORM 层来透明地处理数据的转换。 如果你遇到任何连接问题,那可能是 Oracle 数据库的驱动没有安装或者配置不正确,你应该检查是否已经正确安装了 cx_Oracle 以及 Oracle 数据库的客户端软件。 pip download 命令默认会下载源代码包(通常是.tar.gz 或 .zip 文件)。如果你想要下载二进制的 wheel 文件(.whl),你可以添加 --prefer-binary 选项,这样 pip 就会优先下载二进制包。 bash Copy code pip download cx_Oracle --prefer-binary 这条命令将会下载 cx_Oracle 的 wheel 文件,如果它存在的话。 另外需要注意的是,pip 会根据运行它的 Python 版本和操作系统来选择合适的 wheel 文件。因此,如果你是在一个与目标安装环境不同的机器上下载文件,你可能需要指定 pip 下载与目标环境相匹配的 wheel 文件。 这可以通过 --python-version,--platform,--abi 和 --implementation 等选项来实现。例如: bash Copy code pip download cx_Oracle --prefer-binary --python-version 35 --platform manylinux1_x86_64 --abi cp35m --implementation cp 这条命令会下载用于 Python 3.5,manylinux1_x86_64 平台的 cx_Oracle 的 wheel 文件。你需要根据你的目标环境来替换这些参数。 但是,关于具体的版本、平台、ABI 和实现,你需要参考 pip 的文档,以及 cx_Oracle 在 PyPI 网站上的文件列表来决定最合适的参数。 如果你只能获取到 cx\_Oracle 的`.tar.gz`文件形式的源代码,你可以通过下面的步骤来进行手动安装。 假设你已经下载了 cx\_Oracle 的`.tar.gz`文件到当前目录,并且名为`cx_Oracle.tar.gz`。 你首先需要解压这个压缩包: ~~~ bashCopy codetar -xzvf cx_Oracle.tar.gz ~~~ 这将会创建一个`cx_Oracle-<version>`的目录,其中`<version>`是 cx\_Oracle 的版本号。 接下来,进入这个目录并安装 cx\_Oracle: ~~~ bashCopy codecd cx_Oracle-<version> pip install . ~~~ 这个`pip install .`命令将会在当前目录下查找`setup.py`文件并安装。 需要注意的是,从源码编译 cx\_Oracle 需要你首先安装 Python 的开发文件(比如`python-dev`或`python-devel`等),同时在机器上还需要已经安装并配置好的 Oracle 库。你可以前往 Oracle 的官方网站下载安装 Oracle Instant Client。 https://www.oracle.com/database/technologies/instant-client.html ``` from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) # 格式:oracle+cx_oracle://user:password@hostname/sid app.config['SQLALCHEMY_DATABASE_URI'] = 'oracle+cx_oracle://username:password@hostname/dbname' db = SQLAlchemy(app) # 初始化 SQLAlchemy 对象 #定义一个模型,模型必须继承自 db.Model class User(db.Model): id = db.Column(db.Integer, primary_key=True) # id 列,主键 username = db.Column(db.String(80), unique=True, nullable=False) # username 列 @app.route('/') def index(): admin = User(username='admin') # 新建一个 User 对象 db.session.add(admin) # 添加到 session db.session.commit() # commit 会话 return 'Hello, World!' if __name__ == '__main__': #db.create_all() # 创建所有的表 app.run() ``` ## SQLLite SQLite 是一种嵌入式的关系数据库,它将整个数据库(包括表,索引,触发器和数据)存储在一个单一的磁盘文件中。SQLite 支持 SQL 语法的大部分,使得它能够处理各类数据存储任务。 SQLite 的一些主要特点包括: 独立:SQLite 不需要一个单独的服务器进程或操作系统(它可以运行在 Windows,Linux,macOS 等)。数据都存储在一单一的文件中,这使得它在管理和备份数据方面十分方便。 小型: SQLite 的库(包含所有功能)大小在 250K 和 800K 之间(依据编译方式),这使得它很适合嵌入到其他应用中。 便携:数据库文件可以在 32 位和 64 位机器之间自由可靠的共享,不受字节序或字结构影响。 功能完善:SQLite 支持大量的 SQL 语法和函数,包括事务、触发器和视图等等。 在 Python 中,SQLite 是内置支持的。你可以使用 sqlite3 模块来创建、查询和管理 SQLite 数据库。以下是一个简单的使用 sqlite3 的例子: python Copy code import sqlite3 # 创建一个数据库连接 conn = sqlite3.connect('example.db') # 创建一个游标对象 c = conn.cursor() # 创建一个表 c.execute('''CREATE TABLE stocks (date text, trans text, symbol text, qty real, price real)''') # 插入一行数据 c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)") # 提交当前的事务 conn.commit() # 关闭连接 conn.close() 此段代码先创建了一个 SQLite 数据库文件 example.db,然后创建了一个 stocks 表,并向其中插入一行数据。