# 資料表的操作 ###### tags: `程式學習與問題總集` ## 新增資料 * 在查詢資料前必須先新增資料。 1. 建立資料物件 2. 將物件用add()方法添加到站存資料db.session之中 3. 最後commit * 新增單筆資料 ```python= student = students('rex', '0962050115', "taiwan", 'rex@gmail') db.session.add(student) db.session.commit() ``` * 新增多筆資料 ```python= datas = [students('jaula', '0962050666', "taiwan", 'julia@gmail'), students('python', '0962550115', "taiwan", 'python@gmail')] db.session.add_all(datas) db.session.commit() ``` * 查看資料 ![](https://i.imgur.com/LTMNi5H.png) * 資料已顯示 ![](https://i.imgur.com/olXzOZT.png) ## 查詢資料 * Flask_SQLAlchemy在資料物件的類別上使用了query屬性,使用時會生成新的資料,將所有資料返回。 * 查詢資料 ```python= #前者是取得所有資料,後者是指第一筆 query.all() query.first() ``` * 篩選條件 ```python= datas = students.query.filter_by(name = 'rex').first() #all() ``` * query.get()主索引攔查詢 ```python= data = students.query.get(1) #get()取回的是所屬的資料物件,而非串列 ``` * 範例 ```python= @app.route('/queryall') def queryall(): datas = students.query.all() msg = '' for student in datas: msg += f'{student.name}, {student.tel}, {student.addr}, {student.email} <br>' return msg ``` * 結果 ![](https://i.imgur.com/dAZGapz.png) * 範例 ```python= @app.route('/queryuser/<int:uid>') def queryuser(uid): student = students.query.get(uid) return f'{student.name}<br>, {student.tel}<br>, {student.addr}<br>, {student.email}<br>' ``` * 結果 ![](https://i.imgur.com/8fGQi1X.png) * 範例 ```python= @app.route('/queryname/<string:name>') def queryname(name): student = students.query.filter_by(name = name).first() return f'{student.name}<br>, {student.tel}<br>, {student.addr}<br>, {student.email}<br>' ``` * 結果 ![](https://i.imgur.com/XKP1nDT.png) ## 更新、刪除資料 * 更新,範例 ```python= @app.route('/updateuser/<int:uid>') def updateuser(uid): student = students.query.get(uid) student.name = student.name + 'check' db.session.commit() return '修改成功' ``` * 結果 ![](https://i.imgur.com/clnUaBY.png) * 刪除,範例 ```python= @app.route('/deleteuser/<int:uid>') def deleteuser(uid): student = students.query.get(uid) db.session.delete(student) db.session.commit() return 'delete data Successfully' ``` * 結果 ![](https://i.imgur.com/YNZtLRX.png)