Python MySQL 游标被只读权限阻止

问题描述 投票:0回答:1

我使用 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 包?

python mysql mysql-python mysql-connector
1个回答
0
投票

丹尼尔,

一个潜在的解决方法是使用 pandas 库,它提供了一个更方便的界面来处理数据库(包括 MySQL)。您需要导入 pandas 并导入 mysql.connector。以下是一些可能有所帮助的文档:https://pandas.pydata.org/docs/reference/api/pandas.read_sql.html

此方法使用 pandas.read_sql_query 函数直接在数据库上执行 SELECT 查询并将结果加载到 Pandas DataFrame 中。这样,您不需要显式处理游标和执行方法。

希望有帮助! 金

© www.soinside.com 2019 - 2024. All rights reserved.