Python中的SQL语句分块

Python中的SQL语句分块,python,postgresql,itertools,cartodb,Python,Postgresql,Itertools,Cartodb,我正在尝试将现有的PostGIS代码用于CartoDB。要接收数据,请将其分块并发布到CartoDB,但安装文件中包含的多行create语句分块不好。因此,我发现自己提交了大量内容 我试图通过POST在URL中提交大约9000字节,之后我得到一个414(太大)错误 有人知道如何将块约束为完整的语句(例如,以;)结尾吗 如果每次下一行是CREATETABLE时都进行post,会发生什么情况?像CREATETABLE这样的DDL命令倾向于发出一个隐式提交,这样您就可以创建您所读取、插入然后提交的内容

我正在尝试将现有的PostGIS代码用于CartoDB。要接收数据,请将其分块并发布到CartoDB,但安装文件中包含的多行create语句分块不好。因此,我发现自己提交了大量内容

我试图通过POST在URL中提交大约9000字节,之后我得到一个414(太大)错误

有人知道如何将块约束为完整的语句(例如,以;)结尾吗


如果每次下一行是CREATETABLE时都进行post,会发生什么情况?像CREATETABLE这样的DDL命令倾向于发出一个隐式提交,这样您就可以创建您所读取、插入然后提交的内容。在下一次创建插入块时重复此操作。示例中列出的查询<9k。如果每次发布下一行是create table,会发生什么情况?像CREATETABLE这样的DDL命令倾向于发出一个隐式提交,这样您就可以创建您所读取、插入然后提交的内容。在下一次创建插入块时重复此操作。示例中列出的查询小于9k。
def grouper(iterable, n):
    it = iter(iterable)
    while True:
       chunk = tuple(islice(it, n))
       if not chunk:
           return
       yield chunk

buffer = []

#pattern to match blank or comment lines
pattern = re.compile("^\s*\-\-.*$|\s+$")

for line in fileinput.input():
    #drop blank or comment lines.
    if pattern.match(line):
        pass
    else:
        buffer.append(line.strip())

for group in grouper(buffer,500):
    query = "".join(group)

    params = {
        'api_key' : config['apikey'],
        'q'       : query
    }
    r = requests.post(API_URL, params=params)