收到错误时如何正确关闭mysql连接

时间:2018-11-29 11:46:00

标签: mysql error-handling connection variable-assignment

我具有以下功能:

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的警告,因为连接和游标在分配前可能已被引用。我想知道如何正确摆脱这些警告。我无法在期望主体中添加连接和光标,因为这些可能是造成此错误的行。同时,我无法在try-body中包含close语句,因为在打开和关闭连接之间可能会出现错误。在这种情况下,连接将永远不会关闭。

0 个答案:

没有答案