У меня есть следующая функция:
import datetime
import math
from mysqlx import errorcode
import TechnicalAnalysisFunctions as TAFun
import mysql.connector
import pandas as pd
import mysql.connector
def write_to_high_price_table(ticker):
data = TAFun.getDataFromCSV(ticker, data="Highprice")
dates = data.index.astype('str')
prices = data.values
records_to_insert = [(float(prices[0]), str(ticker[0]), datetime.datetime.strptime(dates[0], '%Y-%m-%d'))]
for i in range(1, len(data.values)):
records_to_insert.append((float(prices[i]), str(ticker[0]), datetime.datetime.strptime(dates[i], '%Y-%m-%d')))
try:
connection = mysql.connector.connect(host='localhost',
database='Stocks',
user='root',
password=_password)
sql_insert_query = """ INSERT INTO HighPrice ( HighPrice, Ticker, Date) VALUES (%s,%s,%s) """
cursor = connection.cursor(prepared=True)
# used executemany to insert 3 rows
cursor.executemany(sql_insert_query, records_to_insert)
connection.commit()
print(cursor.rowcount, "Record inserted successfully into python_users table")
except mysql.connector.Error as error:
print("Failed inserting record into python_users table {}".format(error))
finally:
# closing database connection.
if connection.is_connected():
cursor.close()
connection.close()
print("connection is closed")
Я получаю предупреждения от PyCharm, так как соединение и курсор потенциально ссылаются перед назначением.Мне интересно, как правильно избавиться от этих предупреждений.Я не могу добавить соединение и курсор в теле ожидания, так как это могут быть строки, создающие эту ошибку.В то же время я не могу включить операторы close в try-body, поскольку я могу получить ошибку между открытием и закрытием соединения.В этом случае соединение никогда не будет закрыто.