众所周知,Python是一种解释型语言而非编译语言,因此相比于Java,C#,Go,JavaScript, C++等这些编译型语言,Python在速度上完全没有优势,是最慢的语言之一,随着数据量的增大,耗时呈指数级上升。在Python+QT中,如何快速 *** 作大数据量数据呢?本文结合QGIS和pyqt5,分享一下自己的见解。
def process(input_layer):
source = input_layer.source()
# 遍历获取图层数据源数据库信息
for info in source.split(' '):
if 'dbname' in info:
dbname = info.split('=')[-1].strip("'")
elif 'host' in info:
host = info.split('=')[-1]
elif 'port' in info:
port = info.split('=')[-1]
elif 'user' in info:
user = info.split('=')[-1].strip("'")
elif 'password' in info:
password = info.split('=')[-1].strip("'")
elif 'table' in info:
table = info.split('=')[-1]
schema = table.split('.')[0].strip("'")
layer_name = table.split('.')[-1].strip("'")
elif 'srid' in info:
srid = info.split('=')[-1].strip("'")
conn = psycopg2.connect(host=host, port=port, user=user, password=password,
database=dbname)
cur = conn.cursor()
sql="""UPDATE %s.%s SET max_speed=%s WHERE max_speed=0 and (kind=1 or kind=2) and direct=1 and '32' <> ANY(string_to_array(attribute,'|'))""" % (
schema, layer_name, 30)
cur.execute(sql)
conn.commit()
二十多万的数据,由于需求需要判断的情况过多,使用python循环 *** 作下来,程序运行需要十来个小时,使用sql只需要20min不到,效率飞升。方法仅供参考,欢迎探讨交流
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)