Python Flask SQLAlchemy 插入字典数据方法
HDUZN

在Flask中用SQLAlchemy来插入字典数据,常用方法可能是这样的:

1
2
3
4
5
item = {'name': 'foo', 'value': 42.0}
instance = MyModel(name=item['name'], value=item['value'])

db.session.add(instance)
db.session.commit()

创建一个MyModel类型的实例instance,然后用add方法添加到数据库后提交一下就行了。

然后就有个小问题来了,如果这个数据库表的字段有十几二十个,那这个创建实例的时候就要写十几二十个参数吗?这也太长了。

于是,懒人就发现了另一个方法

1
2
3
4
5
item = {'name': 'foo', 'value': 42.0}
instance = MyModel(**item) # 实例化的时候这里改了

db.session.add(instance)
db.session.commit()

这样不管有多少个字段,就简洁多了!

完整的代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db/test.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)

class MyModel(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80))
value = db.Column(db.Float)

# 遍历列表 插入数据库表
def insert_data():
# 列表中的字典数据
data = [
{'name': 'foo', 'value': 42.0},
{'name': 'bar', 'value': 23.0},
{'name': 'baz', 'value': 13.0},
]

# 遍历列表,映射为模型实例
for item in data:
instance = MyModel(name=item['name'], value=item['value'])
db.session.add(instance)

# 提交模型实例
db.session.commit()

def insert_data2():
# 列表中的字典数据
data = [
{'name': 'foo', 'value': 42.0},
{'name': 'bar', 'value': 23.0},
{'name': 'baz', 'value': 13.0},
]

with app.app_context():
try:
for item in data:
instance = instance = MyModel(**item)
db.session.add(instance)
db.session.commit()
except Exception as e:
db.session.rollback()
print(e)

# db init
def db_init():
with app.app_context():
# 删除表
db.drop_all()
# 创建表
db.create_all()

if __name__ == '__main__':
# 数据库初始化
db_init()

insert_data2()

# app.run(debug=True)

PS.注意 'sqlite:///db/test.db' 数据库连接这里:

sqlite连接字符串中的/斜杠说明:三斜杠为相对路径,四斜杠为绝对路径
比如这里相对路径 test.db 文件是在当前项目目录下的db目录下

  • 本文标题:Python Flask SQLAlchemy 插入字典数据方法
  • 本文作者:HDUZN
  • 创建时间:2023-02-12 21:06:55
  • 本文链接:http://hduzn.cn/2023/02/12/Python-Flask-SQLAlchemy插入字典数据方法/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论