添加mysql执行封装类

This commit is contained in:
workpc 2024-12-02 13:56:46 +08:00
parent 2e5c6fb994
commit baebc35c9e
4 changed files with 99 additions and 13 deletions

View File

@ -2,6 +2,7 @@ import logging
import os
import logging.handlers
import datetime
from lib.tools import MySQLDB,SQLiteHandler
# eta 接口token
@ -21,8 +22,9 @@ edbcodelist = ['CO1 Comdty', 'ovx index', 'C2404194834', 'C2404199738', 'dxy cur
'DOESCRUD Index', 'WTRBM1 EEGC Index', 'FVHCM1 INDEX', 'doedtprd index', 'CFFDQMMN INDEX',
'C2403083739', 'C2404167878', 'C2403250571', 'lmcads03 lme comdty', 'GC1 COMB Comdty',
'C2404171822','C2404167855',
'W000825','W000826','G.IPE', # 美国汽柴油
'S5131019','ID00135604','FSGAM1 Index','S5120408','ID00136724'] # 新加坡汽柴油
# 'W000825','W000826','G.IPE', # 美国汽柴油
# 'S5131019','ID00135604','FSGAM1 Index','S5120408','ID00136724', # 新加坡汽柴油
]
# 临时写死用指定的列,与上面的edbcode对应后面更改
edbnamelist = [
@ -32,8 +34,8 @@ edbnamelist = [
'C2403128043','C2403150124','FVHCM1 INDEX','doedtprd index','CFFDQMMN INDEX',
'C2403083739','C2404167878',
'GC1 COMB Comdty','C2404167855',
'A汽油价格','W000826','ICE柴油价格',
'新加坡(含硫0.05%) 柴油现货价','柴油10ppm国际市场FOB中间价新加坡','Bloomberg Commodity Fair Value Singapore Mogas 92 Swap Month 1','97#汽油FOB新加坡现货价','无铅汽油97#国际市场FOB中间价新加坡'
# 'A汽油价格','W000826','ICE柴油价格',
# '新加坡(含硫0.05%) 柴油现货价','柴油10ppm国际市场FOB中间价新加坡','Bloomberg Commodity Fair Value Singapore Mogas 92 Swap Month 1','97#汽油FOB新加坡现货价','无铅汽油97#国际市场FOB中间价新加坡'
]
@ -195,7 +197,7 @@ warning_data = {
### 开关
is_train = True # 是否训练
is_debug = False # 是否调试
is_debug = True # 是否调试
is_eta = True # 是否使用eta接口
is_timefurture = True # 是否使用时间特征
is_fivemodels = False # 是否使用之前保存的最佳的5个模型
@ -205,10 +207,26 @@ is_update_eta = False # 预测结果上传到eta
is_update_report = False # 是否上传报告
is_update_warning_data = False # 是否上传预警数据
### 北京环境数据库jbsh_test
# url: jdbc:mysql://192.168.101.27:3306/jingbo_test?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&useSSL=false&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
host = '192.168.101.27'
prot = 3306
username ='root'
password = '123456'
dbname = 'jingbo_test'
table_name = 'v_tbl_crude_oil_warning'
db_mysql = MySQLDB(host=host, user=username, password=password, database=dbname)
# 连接到数据库
db_mysql.connect()
# 数据截取日期
start_year = 2013 # 数据开始年份
end_time = '' # 数据截取日期
freq = 'M' # 时间频率,"D": 天 "W": 周"M": 月"Q": 季度"A": 年 "H": 小时 "T": 分钟 "S": 秒 "B": 工作日
freq = 'B' # 时间频率,"D": 天 "W": 周"M": 月"Q": 季度"A": 年 "H": 小时 "T": 分钟 "S": 秒 "B": 工作日
delweekenday = True if freq == 'B' else False # 是否删除周末数据
is_corr = False # 特征是否参与滞后领先提升相关系数
add_kdj = False # 是否添加kdj指标
@ -239,6 +257,8 @@ dataset = 'yuanyoudataset' # 数据集文件夹
# 数据库名称
db_name = os.path.join(dataset,'jbsh_yuanyou.db')
sqlitedb = SQLiteHandler(db_name)
sqlitedb.connect()
settings = f'{input_size}-{horizon}-{train_steps}--{k}-{data_set}-{y}'
# 获取日期时间

View File

@ -40,8 +40,8 @@ pdfmetrics.registerFont(TTFont('SimSun', 'SimSun.ttf'))
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
# from config_jingbo import *
from config_juxiting import *
from config_jingbo import *
# from config_juxiting import *

View File

@ -4,7 +4,6 @@ import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from config_jingbo import logger
from sklearn import metrics
import random, string, base64, hmac, hashlib
from reportlab.pdfbase import pdfmetrics # 注册字体
@ -21,10 +20,11 @@ import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import sqlite3
import pymysql
import tkinter as tk
from tkinter import messagebox
global logger
def timeit(func):
'''计时装饰器'''
def wrapper(*args, **kwargs):
@ -446,5 +446,73 @@ class SQLiteHandler:
else:
print(f"Column '{column_name}' already exists in table '{table_name}'.")
import logging
class MySQLDB:
def __init__(self, host, user, password, database):
self.host = host
self.user = user
self.password = password
self.database = database
self.connection = None
self.cursor = None
def connect(self):
try:
self.connection = pymysql.connect(
host=self.host,
user=self.user,
password=self.password,
database=self.database,
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor
)
self.cursor = self.connection.cursor()
logging.info("Connected to the database successfully.")
except pymysql.Error as e:
logging.error(f"Error connecting to the database: {e}")
def execute_query(self, query):
try:
self.cursor.execute(query)
result = self.cursor.fetchall()
return result
except pymysql.Error as e:
logging.error(f"Error executing query: {e}")
return None
def execute_insert(self, query, values):
try:
self.cursor.execute(query, values)
self.connection.commit()
logging.info("Insert operation successful.")
except pymysql.Error as e:
logging.error(f"Error executing insert: {e}")
self.connection.rollback()
def execute_update(self, query, values):
try:
self.cursor.execute(query, values)
self.connection.commit()
logging.info("Update operation successful.")
except pymysql.Error as e:
logging.error(f"Error executing update: {e}")
self.connection.rollback()
def execute_delete(self, query, values):
try:
self.cursor.execute(query, values)
self.connection.commit()
logging.info("Delete operation successful.")
except pymysql.Error as e:
logging.error(f"Error executing delete: {e}")
self.connection.rollback()
def close(self):
if self.cursor:
self.cursor.close()
if self.connection:
self.connection.close()
logging.info("Database connection closed.")
if __name__ == '__main__':
print('This is a tool, not a script.')

View File

@ -1,15 +1,13 @@
# 读取配置
from config_jingbo import *
from lib.dataread import *
from lib.tools import *
# from lib.tools import *
from models.nerulforcastmodels import ex_Model,model_losss,model_losss_juxiting,brent_export_pdf,tansuanli_export_pdf,pp_export_pdf,model_losss_juxiting
import glob
import torch
torch.set_float32_matmul_precision("high")
sqlitedb = SQLiteHandler(db_name)
sqlitedb.connect()
def predict_main():