python 读取数据调翻译更新表字段

发布时间 2023-12-19 15:38:11作者: 乐乐乐乐乐乐樂
import time

import requests
import pymysql
import datetime
import random
from hashlib import md5
import json

now_date = datetime.datetime.now().strftime("%Y-%m-%d")

appid = 'xxxxxxx'  你的id
appkey = 'xxxx'  你的key

def make_md5(s, encoding='utf-8'):
    return md5(s.encode(encoding)).hexdigest()


def mysqlclient():
    db = pymysql.connect(
        host='127.0.0.1',
        port=3306,
        user='root',
        passwd='123456',
        db='jiale',
        charset='utf8'
    )
    curses = db.cursor()
    sql='SELECT id,zh_cont FROM report_data WHERE tid=%s AND ctime= "%s" AND is_fanyi=0' % (1,now_date)

    try:

        curses.execute(sql)

        report_data = curses.fetchall()

        db.close()

        return report_data

    except:
        print("Error:da s b")

#连百度翻译数据
def to_baidu():
    from_lang = 'zh'
    to_lang = 'en'
    endpoint = 'http://api.fanyi.baidu.com'
    path = '/api/trans/vip/translate'
    url = endpoint + path

    salt = random.randint(32768, 65536)
    content_list = mysqlclient()

    data_list = [row for row in content_list]

    for (id,query) in enumerate(data_list):

        sign = make_md5(appid + str(query[1]) + str(salt) + appkey)
        headers = {'Content-Type': 'application/x-www-form-urlencoded'}
        payload = {'appid': appid, 'q': str(query[1]), 'from': from_lang, 'to': to_lang, 'salt': salt, 'sign': sign}
        r = requests.post(url, params=payload, headers=headers)
        time.sleep(1)
        result = r.json()

        en_cont = result['trans_result'][0]['dst']
        print('翻译:',en_cont)
        id=query[0]
        dd = en_cont


        to_insert(dd,id)
        update_fanyi_status(id)




def to_insert(en_cont, id):
    try:
        db = pymysql.connect(
            host='127.0.0.1',
            port=3306,
            user='root',
            passwd='123456',
            db='jiale',
            charset='utf8'
        )
        cursor = db.cursor()
        sql = "UPDATE report_data SET en_cont = %s WHERE id = %s"
        cursor.execute(sql, (en_cont, id))
        print('塞进去一条id:',id)
        db.commit()
    except pymysql.MySQLError as e:
        print("Error: report_data update error", e)
        db.rollback()
        return False
    finally:
        if cursor:
            cursor.close()
        if db:
            db.close()
    return True

def update_fanyi_status(id):
    try:
        db = pymysql.connect(
            host='127.0.0.1',
            port=3306,
            user='root',
            passwd='123456',
            db='jiale',
            charset='utf8'
        )
        cursor = db.cursor()
        sql = "UPDATE report_data SET is_fanyi = 1 WHERE id = %s"
        cursor.execute(sql, (id))
        print('更新了一条id:',id)
        db.commit()
    except pymysql.MySQLError as e:
        print("Error: report_data update error", e)
        db.rollback()
        return False
    finally:
        if cursor:
            cursor.close()
        if db:
            db.close()
    return True





if __name__ == '__main__':

    to_baidu()