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

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

roc_blog

一起进步,GGS,DDU

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值