不用一行代码,用 API 操作数据库,你信吗(上)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 数据库的重要性不言而喻,但是数据库操作起来却不容易,需要用到各种管理工具,各种不同的连接方式,如果有方便的,屏蔽不同数据库细节的工具该多好,功夫不负有心人,我还真找了这样一个工具,不仅支持多种数据库,更厉害的是,不用为适配写一行代码,来了解下吧

神器出场

今天的主角是 sandman2

可以基于已存在的数据库,自动生成一个 RESTful API 服务器,而不需要写任何代码,用作者的话说,简单地就像给食物加点盐

更厉害的是,从简单地 SQLite 数据库,到大型的商业数据 PostgreSQL, 都能完美支持,且不用写一行代码

目前支持的数据库:

  • MySQL
  • PostgreSQL
  • Oracle
  • Microsoft SQL Server
  • SQLite
  • Sybase
  • Drizzle
  • Firebird

这让我想起了曾经因为找不到合适的数据库框架手忙脚乱的日子,如果早点知道 sandman2 就好了

之所以叫 sandman2,是因为它的前辈是 sandman,sandman 已经有了很强的数据库支持能力,不过在 SQLAlchemy 0.9 版本中,增加了 automap 功能,可以进一步使 sandman 得到简化,于是重写了 sandman,就有了 sandman2,并且 sandman2 的功能远超 sandman

使用 pip 安装 pip install sandman2

安装成功后,就可以得到一个 sandman2ctl 命令行工具,用它来启动一个 RESTful API 服务器

不用写一行代码,直接启动:

sandman2ctl sqlite+pysqlite:///data.db

注意:如果用的 python 版本是 3.8 及以上,且在 Windows 上,执行时可能会遇到,AttributeError: module 'time' has no attribute 'clock' 的错误 这是因为 3.8 以后 time 模块的 clock 属性换成了 perf_counter() 方法,所以需要修改下 lib\site-packages\sqlalchemy\util\compat.py 的 331 行,将 time_func = time.clock 换成 time_func = time.perf_counter() 保存即可

启动之后,默认端口是 5000,访问地址是 http://localhost:5000/admin 就能看到服务器控制台了

57.jpg

数据库连接

前面已经看到连接 SQLite 数据的方法

sandman2 是基于 SQLAlchemy 的,所以使用连接 Url 来连接数据库

格式为

dialect+driver://username:password@host:port/database

  • dialect 为数据库类型,如 mysql、SQLite 等
  • driver 为数据库驱动模块名,例如 pymysql、psycopg2、mysqldb 等,如果忽略,表示使用默认驱动

以 mysql 数据库为例:

sandman2ctl 'mysql+pymysql://bob:bobpasswd@localhost:3306/testdb'

如果环境中没有安装 pymysql 模块,必须先安装,才能正常启动

其他数据库的连接方式可参考 SQLAlchemy 的 引擎配置 章节, 在这里查看 https://docs.sqlalchemy.org/en/13/core/engines.html

控制台

需要快速预览数据,对数据进行简单调整的话,控制台很有用

左侧菜单除了 Home 外,其他的都是库表名称

点击相应库表名称,会在右侧显示表内数据,并且可以做增删改操作

58.jpg


库表数据

点击新增,打开新增页面:

59.jpg


新增页面

用过 Django 的同学会感觉很熟悉,不过字段并没有类型支持,只能以字符串输入,自行确保数据类型正确,否则保存时会收到错误信息

点击记录前面的笔状图标,会进入编辑页面

60.jpg


编辑页面

点击记录前的删除图标,来删除记录

另外多选数据后,可以通过 With selected 菜单下的 Delete 按钮来批量删除

控制台方便易用,适合一些简单的、数据量少的操作

注意:由于控制台不能登录即可访问,建议将服务器创建在本地或内网环境中

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
13小时前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版操作报错合集之采集oracle的时候报ORA-65040:不允许从可插入数据库内部执行该操作如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
11 3
|
2天前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之当 SQL Server 源数据库中的数据更新后,CDC 吐出的操作(op)是怎样的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
12 0
|
3天前
|
Oracle 关系型数据库 Java
java操作多数据源将oracle数据同步达梦数据库
java操作多数据源将oracle数据同步达梦数据库
|
3天前
|
SQL Java 数据库连接
JDBC Java标准库提供的一些api(类+方法) 统一各种数据库提供的api
JDBC Java标准库提供的一些api(类+方法) 统一各种数据库提供的api
11 0
|
3天前
|
存储 数据处理 数据库
深入了解达梦数据库的增删查改操作:从入门到精通
深入了解达梦数据库的增删查改操作:从入门到精通
|
3天前
|
SQL Java 数据库连接
Java数据库编程实践:连接与操作数据库
Java数据库编程实践:连接与操作数据库
12 0
|
3天前
|
SQL JSON 关系型数据库
[UE虚幻引擎插件DTPostgreSQL] PostgreSQL Connector 使用蓝图连接操作 PostgreSQL 数据库说明
本插件主要是支持在UE蓝图中连接和操作PostgreSQL 数据库。
20 2
|
3天前
|
Java 关系型数据库 数据库连接
【C 言专栏】C 语言与数据库的连接与操作
【5月更文挑战第2天】本文探讨了C语言如何连接和操作数据库,介绍了数据库连接的基本原理,如通过ODBC、JDBC或原生接口与数据库交互。文章详细阐述了使用ODBC连接的步骤,并列举了C语言在数据库操作中的常见任务,强调了错误处理、数据类型匹配和性能优化的重要性。通过实际案例,展示了在学生信息管理系统中应用C语言与数据库交互的过程。本文旨在帮助读者更好地理解和应用C语言进行数据库管理。
|
3天前
|
关系型数据库 MySQL Linux
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
|
3天前
|
SQL 关系型数据库 MySQL
【MySQL-5】DDL的数据库操作:查询&创建&删除&使用(可cv代码+演示图)
【MySQL-5】DDL的数据库操作:查询&创建&删除&使用(可cv代码+演示图)

热门文章

最新文章