我使用 Python MySQL 数据库 MySQL 连接(mysql-connector=2.2.9 和 mysql=0.0.3)已经快一年了,它很有魅力。
但是,我们的写入权限已从核心数据库中删除。到目前为止,这应该不是问题,因为我们只从该数据库获取数据并写入我们有权限的其他数据库。
但是,由于游标接口除了
cursor.execute(query)
之外并没有提供另一种获取数据的方式,看来MySQL无法保证当前执行的查询是只读命令。因此,我收到以下错误
"Access denied for user 'myuser'@'10.64.XXX.XX' (using password: YES)]
相关代码如下
def get_connection(database, username, password):
return MySQLDatabase(host=getenv(DATABASE_HOST), port=getenv(DATABASE_PORT),
database=database,
user=username, password=password).connection
self.read_connection = self.get_connection(database, usr, pwd)
cursor_read = self.read_connection.cursor()
cursor_write = self.write_connection.cursor()
operative_function_query = """SELECT * FROM operative_function"""
cursor_read.execute(operative_function_query) #this line fails
results = cursor_read.fetchall()
在另一个具有写权限的数据库中尝试相同的查询不会 失败
我可以使用以下命令直接在数据库中运行 SELECT 语句 相同的用户名/密码
有人曾经遇到过这个问题吗?是否有一种解决方法可以从具有只读权限的数据库中获取数据(我希望在界面中找到一个 SELECT 方法,但没有)。
也许还有另一个 python 包?
丹尼尔,
一个潜在的解决方法是使用 pandas 库,它提供了一个更方便的界面来处理数据库(包括 MySQL)。您需要导入 pandas 并导入 mysql.connector。以下是一些可能有所帮助的文档:https://pandas.pydata.org/docs/reference/api/pandas.read_sql.html
此方法使用 pandas.read_sql_query 函数直接在数据库上执行 SELECT 查询并将结果加载到 Pandas DataFrame 中。这样,您不需要显式处理游标和执行方法。
希望有帮助! 金