gpt4 book ai didi

如果在类中声明,Python 无法连接到 MySQL

转载 作者:行者123 更新时间:2023-11-29 04:09:11 24 4
gpt4 key购买 nike

我是 Python 新手。我正在尝试使用 Python 连接 MySQL 服务器。我从 MySQL 官方页面写了类似指南,没关系。但是,当我创建一个连接器类时,它引发了错误“MySQL 连接不可用”

这是我的课

import mysql.connector
from mysql.connector import errorcode

## BEGIN MySQL Connector Class
class MySQLConnector :
configs = {
"user":"root",
"password":"",
"host":"127.0.0.1",
"database":"python_db",
"raise_on_warnings": True
}
cursor = None
connection = None

## BEGIN Constructor
def __init__(self, configs = {}) :
if(any(configs)!=False) :
self.configs = configs
## END Constructor

## BEGIN Open
def open(self) :
try:
self.connection = mysql.connector.connect(self.configs)
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("Something is wrong with your user name or password")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("Database does not exists")
else:
print(err)
finally:
self.connection.close()
return self.connection
## END Open

## BEGIN close connection
def close(self) :
self.cursor.close()
self.connection.close()
## END close connection

## BEGIN execute
def execute(self, query) :
if(self.connection == None) :
print("Connection is None")
return
self.cursor = self.connection.cursor()
if(self.cursor!=None) :
self.cursor.execute(query)
else:
print("Cursor is 'None'")
## END execute



## END MySQL Connector Class

## BEGIN RUN
objConnect = MySQLConnector()
objConnect.open()
objConnect.execute("SELECT * FROM User")

请告诉我解决方法并解释为什么我的代码有错误。

谢谢!


已编辑

最后,mata和alecxe帮我解决了这个问题,我不知道该选择哪个解决方案。我在这里总结一下有人和我一样有错误:1、去掉finally语句。2. 在self.connection = mysql.connector.connect(**self.configs)

中使用 **

最佳答案

即使您更正了 alecxe 指出的错误,您的代码仍然无法运行。

finally block 确保每个连接在返回之前关闭,无论是否有异常,所以 open 方法只返回关闭的连接。

关于如果在类中声明,Python 无法连接到 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17721794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com