---
# System prepended metadata

title: 資料表的操作
tags: [程式學習與問題總集]

---

# 資料表的操作
###### 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)
