Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用erlang批量保存到DB_Python_Functional Programming_Erlang - Fatal编程技术网

Python 如何使用erlang批量保存到DB

Python 如何使用erlang批量保存到DB,python,functional-programming,erlang,Python,Functional Programming,Erlang,在python中,我有一个类,该类在每个buffer\u size记录中批量插入数据库 class Persister(object): def __init__(self, buffer_size): self.collection = [] self.buffer_size = buffer_size def persist(self): # code to save self.collection to some data

在python中,我有一个类,该类在每个
buffer\u size
记录中批量插入数据库

class Persister(object):

    def __init__(self, buffer_size):
        self.collection = []
        self.buffer_size = buffer_size

    def persist(self):
        # code to save self.collection to some database goes here...

    def save(self, new_record):
        self.collection.append(new_record)
        if len(self.collection) > self.buffer_size:
            self.persist()
            self.collection = []
我可以这样使用它:

MyTablePersister = Persister(1000)
records = [] #imaging a list of thousands of records here
for record in records:
    MyTablePersister.save(record)

我的问题是如何在Erlang中实现这一点?

您可以使用
gen\u服务器:

-模块(s3)。
-行为(gen_服务器)。
-导出([开始/1、停止/0、保存/1])。
-导出([init/1,handle\u call/3,handle\u cast/2,handle\u info/2,
终止/2,代码变更/3])。
-定义(服务器名称,?模块)。
-定义(回调模块,?模块)。
%%接口功能:
开始(大小)->
gen_服务器:启动链接({local,?server_NAME},?回调模块,[BuffSize],])。
停止()->
gen_服务器:调用(?回调_模块,停止)。
保存(记录)->
gen_服务器:调用(?CALLBACK_模块,{save,Record})。
保存(记录)->
%%将记录保存到数据库的代码
io:格式(“已超出BuffSize。正在保存到数据库。~n”)。
%%回调函数:
初始化([BuffSize])->
{好的,{BuffSize,0,[]}。
handle_调用({save,Record},{BuffSize,Count,Records})->
新记录=[Record | Records],
新闻状态=
案例计数+1>的大小
正确->
保存(新记录),
{BuffSize,0,[]};
错误->
{BuffSize,Count+1,NewRecords}
完,,
{回复,NewRecords,NewState};
处理呼叫(停止、来自、状态)->
{停止,正常,停止,状态}。
句柄\u cast(\u Msg,State)->
{诺雷普利州}。
句柄信息(\u信息,状态)->
{诺雷普利州}。
终止(_原因,_状态)->
好啊
代码更改(_OldVsn,State,_Extra)->
{好的,州政府}。
在外壳中:

1> c(s3).
s3.erl:48: Warning: variable 'Records' is unused
{ok,s3}

2> s3:start(3).
{ok,<0.64.0>}

3> s3:save(["John", 1]).
[["John",1]]

4> s3:save(["Sally", 2]).
[["Sally",2],["John",1]]

5> s3:save(["Joe", 3]).
[["Joe",3],["Sally",2],["John",1]]

6> s3:save(["Sue", 4]).
BuffSize exceeded. Saving to database.
[["Sue",4],["Joe",3],["Sally",2],["John",1]]

7> s3:save(["Jill", 5]).
[["Jill",5]]

8>
1>c(s3)。
s3.erl:48:警告:未使用变量“记录”
{好的,s3}
2> s3:开始(3)。
{好的,}
3> s3:保存([“John”,1])。
[“约翰”,1]]
4> s3:保存([“Sally”,2])。
[Sally,2],[John,1]]
5> s3:保存([“Joe”,3])。
[Joe,3],“Sally”,2],“John”,1]]
6> s3:保存([“Sue”,4])。
尺寸超过。保存到数据库。
[Sue,4],“Joe”,3],“Sally”,2],“John”,1]]
7> s3:保存([“吉尔”,5])。
[“吉尔”,5]]
8>

太好了,谢谢,不知道为什么我被否决了though@m.awad,因为您没有提供任何显示您试图解决问题的代码,所以有人否决了您的问题。