ray.data.Dataset.write_sql#

Dataset.write_sql(sql: str, connection_factory: Callable[[], Any], ray_remote_args: Dict[str, Any] | None = None, concurrency: int | None = None) None[源代码]#

写入一个提供 Python DB API2 兼容 连接器的数据库。

备注

此方法使用 DB API2 的 executemany 方法并行写入数据。要了解更多关于此方法的信息,请参阅 PEP 249

备注

此操作将触发对此数据集执行的延迟转换。

示例

import sqlite3
import ray

connection = sqlite3.connect("example.db")
connection.cursor().execute("CREATE TABLE movie(title, year, score)")
dataset = ray.data.from_items([
    {"title": "Monty Python and the Holy Grail", "year": 1975, "score": 8.2},
    {"title": "And Now for Something Completely Different", "year": 1971, "score": 7.5}
])

dataset.write_sql(
    "INSERT INTO movie VALUES(?, ?, ?)", lambda: sqlite3.connect("example.db")
)

result = connection.cursor().execute("SELECT * FROM movie ORDER BY year")
print(result.fetchall())
[('And Now for Something Completely Different', 1971, 7.5), ('Monty Python and the Holy Grail', 1975, 8.2)]
参数:
  • sql – 一个指定要写入的表的 INSERT INTO 语句。参数的数量必须与表中的列数匹配。

  • connection_factory – 一个不接受参数并返回 Python DB API2 连接对象 的函数。

  • ray_remote_args – 传递给写任务中 remote() 的关键字参数。

  • concurrency – Ray 任务的最大并发运行数量。设置此参数以控制并发运行的任务数量。这不会改变运行的任务总数。默认情况下,并发性是根据可用资源动态决定的。