91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用API操作數據庫

發布時間:2022-02-28 16:52:41 來源:億速云 閱讀:490 作者:iii 欄目:開發技術

這篇“如何使用API操作數據庫”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“如何使用API操作數據庫”文章吧。

神器出場

今天的主角是 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就能看到服務器控制臺了

數據庫連接

前面已經看到連接 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 的 引擎配置 章節, 在這里查看 docs.sqlalchemy.org/en/13/core/engines.html

控制臺

需要快速預覽數據,對數據進行簡單調整的話,控制臺很有用

左側菜單除了 Home 外,其他的都是庫表名稱

點擊相應庫表名稱,會在右側顯示表內數據,并且可以做增刪改操作

點擊新增,打開新增頁面:

用過 Django 的同學會感覺很熟悉,不過字段并沒有類型支持,只能以字符串輸入,自行確保數據類型正確,否則保存時會收到錯誤信息

點擊記錄前面的筆狀圖標,會進入編輯頁面

點擊記錄前的刪除圖標,來刪除記錄

另外多選數據后,可以通過 With selected 菜單下的 Delete 按鈕來批量刪除

控制臺方便易用,適合一些簡單的、數據量少的操作

注意:由于控制臺不能登錄即可訪問,建議將服務器創建在本地或內網環境中

API

以 RESTful 的角度來看,庫表相當于資源(resource),一組資源相當于集合(collection)


查詢

通過 Http GET 方法,以 JSON 格式將數據返回,例如返回 學生表 student的所有記錄:

$ curl http://localhost:5000/student/


{"resources":[{"age":18,"class":"1","id":1,"name":"\u5f20\u4e09","profile":"\u64c5\u957f\u5b66\u4e60"},...

注意:資源要以 / 結尾

通過參數 page 來分頁,例如返回 學生表 student 的第一頁數據

$ curl http://localhost:5000/student/?page=1
{"resources":[{"age":18,"class":"1"...

通過參數 limit 顯示返回行數

如果要獲取具體記錄,可以用主鍵值作為節段,例如獲取 id 為 3 的學生記錄

$ curl http://localhost:5000/student/3
{"age":18,"class":"2","id":3,"name":"\u738b\u4e94","profile":"\u7231\u7f16\u7a0b"}

以字段名做參數,相當于查詢條件,例如,查詢 name 為 Tom 的學生記錄:

$ curl http://localhost:5000/student/?name=Tom{"resources":
[{"age":19,"class":"1","id":7,"name":"Tom","profile":"Handsome"}]}

查詢條件可以被組合,例如,查詢班級為 1 年齡為 18 的學生:

$ curl http://localhost:5000/student/?class=1&age=19{"resources":
[{"age":19,"class":"1","id":2,"name":"\u674e\u56db","profile":"\u559c\u6b22\u7bee\u7403"},{"age":19,"class":"1","id":7,"name":"Tom","profile":"Handsome"}]}

修改

POST 方法用于新增,新增內容,由請求的數據部分提供,例如增加一個學生信息:

$ curl -X POST -d '{"name": "Lily", "age": 17, "class":1, "profile":"Likely"}' -H "Content-Type:
application/json" http://127.0.0.1:5000/student/{"age":17,"class":"1","id":8,"name":"Lily","profile":"Likely"}

注意:庫表主鍵是自增長的,可以忽略主鍵字段,否則必須提供

PATCH 方法用于更新,更新內容,由請求的數據部分提供,例如將 id 為 1 的學生班級更改為 3

注意: 更新時主鍵信息通過 url 的主鍵值節段提供,而不在數據部分中

$ curl -X PATCH -d '{"class":3}' -H "Content-Type:
application/json" http://127.0.0.1:5000/student/1{"age":18,"class":"3","id":1,"name":"\u5f20\u4e09","profile":"\u64c5\u957f\u5b66\u4e60"}

DELETE 方法由于刪除,例如刪除 id 為 8 的學生記錄:

$ curl -X DELETE -H "Content-Type: application/json" http://127.0.0.1:5000/student/8

其他接口

獲取表的字段定義信息,通過 meta 節段獲取,例如獲取 學生表 student的字段定義:

$ curl http://127.0.0.1:5000/student/meta
{"age":"INTEGER(11)","class":"VARCHAR(255)","id":"INTEGER(11) (required)","name":"VARCHAR(255)","profile":"VARCHAR(500)"}

導出數據,通過查詢字段 export 獲取,數據格式為 csv,例如導出學生數據,存放到 student.csv 文件中:

$ curl -o student.csv http://127.0.0.1:5000/student/?export
% Total    % Received % Xferd  Average Speed
Time    Time     Time  Current                                 Dload  Upload   Total   Spent    Left  Speed100   202  100   202    0     0   2525      0 --:--:-- --:--:-- --:--:--  2525

還有更多的接口有待你的探索

部署服務

sandman2 的服務器是基于 Flask 的,具體可以去官網參考,在此就不贅述了。

以上就是關于“如何使用API操作數據庫”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

api
AI

武城县| 股票| 鹤岗市| 延安市| 时尚| 福泉市| 那坡县| 黄龙县| 双牌县| 新巴尔虎左旗| 巧家县| 新蔡县| 巍山| 慈溪市| 临泽县| 石台县| 奉节县| 乌兰县| 平江县| 板桥市| 平泉县| 张家界市| 琼结县| 长阳| 边坝县| 酒泉市| 龙陵县| 尼玛县| 周口市| 大洼县| 通化县| 浮山县| 博野县| 湾仔区| 云林县| 新邵县| 历史| 大关县| 锡林郭勒盟| 松江区| 青海省|