Pyqt5中使用sql如何完成大数据量数据处理

Pyqt5中使用sql如何完成大数据量数据处理,第1张

众所周知,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不到,效率飞升。方法仅供参考,欢迎探讨交流

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/800109.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)

保存