Python Pony ORM 一次插入多个值

标签 python database postgresql ponyorm

我正在尝试使用 Pony ORM 将多个值插入到我的 postgres 数据库中。我目前的方法效率很低:

from pony.orm import *

db = Database()

class Names(db.Entity):
    first_name = Optional(str)
    last_name = Optional(str)


family = [["Peter", "Mueller"], ["Paul", "Meyer"], ...] 


@db_session
def populate_names(name_list)
    for name in name_list:
        db.insert("Names", first_name=name[0], last_name=name[1])


if __name__ == "__main__":
    db.bind(provider='postgres', user='', password='', host='', database='')
    db.generate_mappings(create_tables=True)
    populate_names(family)

这只是一个简短的示例,但输入的结构是相同的: 列表的列表。 我正在从多个 xml 文件中提取数据并一次插入一个"file"。

有没有人知道如何在 Pony ORM 中将多行数据放入一个插入查询中?

最佳答案

Pony 没有为此提供特殊的东西,你可以使用 execute_values来自 psycopg2.extras。从 db 获取 connection 对象以使用它。

from psycopg2.extras import execute_values
...
names = [
    ('はると', '一温'),
    ('りく', '俐空'),
    ('はる', '和晴'),
    ('ひなた', '向日'),
    ('ゆうと', '佑篤')
]

@db_session
def populate_persons(names):
    sql = 'insert into Person(first_name, last_name) values %s'
    con = db.get_connection()
    cur = con.cursor()
    execute_values(cur, sql, names)

populate_persons(names)

execute_valuesFast execution helpers 中列出所以我认为 iе 应该是最有效的方式。

关于Python Pony ORM 一次插入多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51655297/

相关文章:

python - 家谱图数据库

postgresql - 使用 Coldfusion 从 Postgres 存储和检索图像

python - 用于比较两个 NumPy 数组的逐元素广播?

python - pandas 将函数列表应用于数据框

mysql - 在没有存储过程、触发器或 UDF 的情况下实现父类(super class)型和子类型数据完整性

database - oracle 11g 瘦 jdbc 驱动程序与 oracle 10g 数据库兼容吗?

postgresql - Grails中的URL映射,除根名外不应显示其他任何内容

sql - 将一个表的行转换为 json 并将其添加到另一个表 PostgreSQL

python - 为已发布的包供应 python 包

python - 查看 string.maketrans 的输出