Python & SQLALchemy 学习笔记_新增、修改以及删除资料

前一篇文章有提到该如何利用 SQLALchemy 建立一张资料表,
这篇文章主要是纪录该如何利用 SQLALchemy 进行资料的操作,
查询的部分则是会放到下一篇文章

一、新增资料

可以透过在同一个 module 下直接进行资料的操作,
也可以将另外撰写一个 module 并将表结构以及操作实体 import
来进行操作,下面的範例都会是採用后者的写法并将档案命名为 test.py

(一)、引入表结构以及 create_session

from main import create_sessionfrom main import Testsession = create_session()

(二)、插入单笔资料

利用 session.add() 即可插入单笔资料

import datetimefrom main import create_sessionfrom main import Testsession = create_session()datas = {    "name": "nick",    "time": datetime.datetime.now() }session.add(Test(**datas))session.commit()session.close()

注: sqlite 的 DATETIME 只接受 DATETIME object 的型态,因此不需要 strftime()
注: ** 代表将资料打包成 key, value 的形式,详细参考资料
http://img2.58codes.com/2024/20144024CG9myAwGdw.png
http://img2.58codes.com/2024/201440249t2BBeF8Sp.png

如果加入了不在表结构当中的元素,系统则会跳出错误

from main import create_sessionfrom main import Testsession = create_session()datas = {    "name": "nick",    "time": datetime.datetime.now(),    "location": "Taiwan" }try:    session.add(Test(**datas))    session.commit()except Exception as e:    print(e.__class__.__name__)    print(str(e))finally:    session.close()

http://img2.58codes.com/2024/201440240gwRO5bfY4.png

(三)、插入多笔资料

将资料以串列的型态包起来并利用 session.add_all()

from main import create_sessionfrom main import Testsession = create_session()datas = [    Test(name="nick", time=datetime.datetime.now()),    Test(name="honey", time=datetime.datetime.now())]try:    session.add_all(datas)    session.commit()except Exception as e:    print(e.__class__.__name__)    print(str(e))finally:    session.close()

http://img2.58codes.com/2024/20144024AMaEGGoPJu.png
http://img2.58codes.com/2024/20144024G5S4uphePw.png

二、修改资料

from main import create_sessionfrom main import Testsession = create_session()datas = {"name": "andy"}try:    session.query(Test).filter_by(id=1).update(datas)    session.commit()except Exception as e:    print(e.__class__.__name__)    print(str(e))finally:    session.close()

语法拆解:

session.query(Test): 表示针对 Test 这个资料结构中的资料表进行查询.filter_by(id=1): 表示利用 ORM 进行资料筛选,选到指定资料.update(datas)

http://img2.58codes.com/2024/20144024BOjVpjZntm.png

三、删除资料

原理同 update(),只是 delete() 并不需要传入参数

from main import create_sessionfrom main import Testsession = create_session()try:    session.query(Test).filter_by(id=1).delete()    session.commit()except Exception as e:    print(e.__class__.__name__)    print(str(e))finally:    session.close()

http://img2.58codes.com/2024/20144024317gSdIhTR.png


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章