由于某种原因,插入指令非常缓慢。
痛苦地缓慢,我的意思是我从每秒400次更新到大约5次。
这是有问题的方法:
@app.route('/sendData/<path:data>', methods=['POST'])
def receiveData(data): #Data = '0,2C7,2C6,1C8,2C2,1' always.
def h(point):
cur.execute("INSERT INTO points (x, y) VALUES({},{});".format(*point.split(",")))
g.db.commit()
cur = g.db.cursor()
#list(map(h, data.split("C"))) This enables the slow.
return "Done"
当我取消注释该地图时,它会变得非常缓慢。我也试过这个方法,同样的事情。
def receiveData(data): #Data = '0,2C7,2C6,1C8,2C2,1' always.
cur = g.db.cursor()
cur.execute("INSERT INTO points (x, y) VALUES({}, {});".format(*data.split("C",1)[0].split(",")))
g.db.commit()
if data.count("C") == 0:
return "Done"
else:
return receiveData(data.split("C",1)[1])
我认为我不需要提交每一个插入内容,但是将它放在每个函数的末尾没有任何区别。
答案 0 :(得分:0)
我建议您收集要插入的所有数据,然后构建多行插入(您可以测试性能明智,哪个限制最好)一次插入100个或更多点。
不幸的是,根据您的版本,我们从大多数DBMS中都知道不存在典型的INSERT ... VALUES(...), VALUES(..), ...
,但是有一个解决方案可以根据此Question
INSERT INTO 'points' (x, y)
SELECT 0 AS 'x', 2 AS 'y'
UNION SELECT 7, 2
UNION SELECT 6, 1
UNION SELECT 8, 2
UNION SELECT 2, 1