python多数据库+memcache操作练习

野生程序猿-杂烧4年前随意分享559
import function
import math
import threading
from pymemcache.client.base import Client

mem1 =Client(('112.124.0.48', 11555))
mem2 =Client(('222.73.246.31', 11555))
#mem2 =Client(('222.73.246.33', 11555))
base=function.base()
gps=function.gps()

import config
CONFIG = config.config()
config=CONFIG.get_config()
config_other=CONFIG.get_config_other()





db2=function.db_mysql('127.0.0.1','root','root','fenxi','utf8',33306)

sql='select * from imei where imei not in (select imei from all_status) order by id desc'

list_all=db2.select_all(sql)

task_list=[]
task_end=0
task_num=2
task_onenum=math.ceil(len(list_all)/task_num)

db_obj={}

def db2_dosql(sql):
    global db2
    base.log(sql)
    db2.dosql(sql)

def task_one(num):

    global task_list, task_end, task_num,task_onenum,list_all,mem1,mem2,config_other,db2
    base.sleep(num)
 
    db_obj[num] = function.db_mysql('127.0.0.1', 'root', 'root', 'fenxi', 'utf8', 33306)
    db = function.db_taos(config_other["taos"])

    base.log('task->'+str(num))

    start=(num-1)*task_onenum
    end=start+task_onenum
    print(start)
    print(end)
    if(end>len(list_all)-1):
        end=len(list_all)-1
    list=[]
    for i in range(start,end):
        list.append(list_all[i])

    # print(data)
    for v in list:
        try:

            imei = v['imei']
            db_name = 'gpslog'
            db_sql = "select * from gpslog{imei} where datatype='RP-Data' order by ts desc limit 1".format(
                imei=imei)
            print(db_sql)
            data = db.select_all(db_sql)

            this_gpstime = str(data[0][1])
            this_lng = data[0][2]
            this_lat = data[0][3]
            this_speed = data[0][4]
            this_altitude = data[0][5]  # 方位角
            this_satellites = data[0][6]
            this_acc = data[0][7]
            this_power = data[0][8]
            this_fires = data[0][9]
            this_vibration = data[0][10]
            this_lv = data[0][11]
            this_locations = data[0][12]

            this_lac = data[0][18]

            this_datatype = data[0][26]
            this_alarmtype = data[0][20]

            this_time = base.strtotime(this_gpstime)

            this_vibration = data[0][10]


            this_all_statu = "run,{this_lng},{this_lat},20200604135121,0.00,3.96,{this_time}|stop,{this_lng},{this_lat},20200604135531,0.00,0.00,{this_time}|{this_time}".format(
                imei=imei, this_time=this_time, this_lng=this_lng, this_lat=this_lat, )

            print(data)

            all_status_str = imei + "_LatLng"

            # 保存memcache 写数据库
            print(this_all_statu)
            # check_str=mem2.get(all_status_str)
            # check_err=0
            # try:
            #     if base.str(check_str)=='':
            #         check_err = 1
            # except:
            #     check_err = 1
            check_err = 1
            if check_err==1:
                #mem1.set(all_status_str, this_all_statu)
                mem2.set(all_status_str, this_all_statu)
                base.log(all_status_str + '->' + this_all_statu)
            else:
                print('无需写入')
            # 保存mysql结果
            # upsql = "update imei set ok=1 where imei='{imei}'".format(imei=imei)
            #
            # result =db3.dosql(upsql)

            insersql = "insert into all_status  (imei,str) values ('{imei}','{this_all_statu}')".format(imei=imei,this_all_statu=this_all_statu)
            base.log(insersql)
            #result =db_obj[num].dosql(insersql)
            #print(result)

        except:
            pass


    #db.close()
def task_all():
    global task_num
    for i in range(1,task_num+1):
        #print(i)
        threading.Thread( target=task_one, args=(i,) ).start()
        #task_one(i)




task_all()
print("end")

# db.close()
# db2.close()
# base.exit()


标签: python

相关文章

python RabbitMq的订阅

【test_RabbitMq1.py】import pika import json credentials = pika.PlainCredentia...

python操作mysql

根据php思路写的,最近有空的时候学一点python。# -*- coding: UTF-8 -*- import pymysql cla...

编译的困扰-经验分享

编译的困扰-经验分享

开发的时候我们编译经常遇到坑,一会要用python3,一会又要用python 2.7的情况,nodejs一会要这个版本,一会要那个版本的情况,甚至npm都有版本要求。...

python小网站开发

看了前面讲的开发分段,开发小网站其实需要到的知识点不太多,有其他语言基础的基本可以直接上手。【views.py】""" 从module里 取方法,直接把数据提...