使用sqlalchemy有效地插入字典列表

Ish*_*att 5 python dictionary sqlalchemy

我有一个包含字典作为元素的列表.所有字典都面对我的模式,是否有一种简单有效的方法可以在sqlalchemy中将这些细节插入到db中?

我的名单如下

[{id:'12',name:'a':lang:'eng},{id:'13',name:'b':lang:'eng},{id:'14',name:'c':lang:'eng}]
Run Code Online (Sandbox Code Playgroud)

我正在下面给出一个模式

id String(10)
name String(10)
lang String(10)
Run Code Online (Sandbox Code Playgroud)

til*_*cog 9

SQLAchemy文档中所述,您可以table通过调用connection.execute()方法,使用table.insert() 和记录列表作为参数来插入许多记录,如下所示:

connection.execute(table.insert(), [ 
        {'id':'12','name':'a','lang':'eng'},
        {'id':'13','name':'b','lang':'eng'},
        {'id':'14','name':'c','lang':'eng'},
    ]
)
Run Code Online (Sandbox Code Playgroud)

当然,假设您table确实拥有字典键中所述的列名,并且您的值不会违反您可能已定义的任何约束.

  • “table.insert()”从哪里来?我肯定不能只在那里写我的数据库表名???当我尝试时,我失败了。 (2认同)
  • @EsbenEickhardt,您需要一个表对象。如果您只是使用数据库中的表,则可以使用 `metadata = sa.MetaData()` `table=sa.Table('some_table',metadata,autoload=True, autoload_with=engine 自动加载该表的属性)` (2认同)

Bah*_*gar 8

使用 SqlAlchemy 会话的另一种用途:

obj_list = []
data_list = [{id:'12',name:'a':lang:'eng},{id:'13',name:'b':lang:'eng'}{id:'14',name:'c':lang:'eng}

# Loop through each object in the list
for record in data_list:
  data_obj= Table(**record)
  obj_list.append(data_obj)

session.add_all(obj_list)
session.commit()
Run Code Online (Sandbox Code Playgroud)