为什么MariaDB不会通过Python返回任何查询,而查询在其他方面都可以正常工作?



我有一个正常运行的MariaDB服务器。当使用自己的客户端软件本地登录时,或者通过远程计算机(例如 Navicat(连接到时,它会按预期工作。以这些方式连接时,它会按预期响应所有SELECTINSERT命令。

但是我无法让它响应 Python,它甚至不会返回错误。

以下是测试代码:

#!/usr/bin/python
import mysql.connector as mariadb
# import mariadb
class dbQuery:
def __init__(self):
try:
self.mariadb_connection = mariadb.connect(host='127.0.0.1', port=8457, user='root', password='XXXXX', database='empowerment')
self.cursor = self.mariadb_connection.cursor()
except:
print("Error")
def query(self):
query = "SELECT 1+1;"
try:
ans = self.cursor.execute(query)
except:
print("Error")
print("ans1: ",ans)
return ans
def __del__(self):
self.mariadb_connection.close()
thisQuery = dbQuery()
ans = thisQuery.query()
print("ans2: ",ans)

ANS1 和 ANS2 都使用 MySQL.connector 和 (beta( Mariadb 连接器打印None。不会抛出任何异常。如果我print连接或游标变量,它们似乎在代码中的适当点具有有效内容。只有execute的输出似乎是错误的。这是在Raspberry Pi OS上,如果这很重要的话。

我可能错过了什么?

mysql.connector

基于Python 数据库 API 规范 v2.0(链接(
execute方法返回None
若要获取查询结果,需要使用fetchall等方法,或者
需要遍历cursor对象本身。
因此,您的query方法应如下所示:

def query(self):
query = "SELECT 1+1;"
try:
self.cursor.execute(query)
ans = self.cursor.fetchall()
except:
print("Error")
print("ans1: ",ans)
return ans

相关内容

  • 没有找到相关文章

最新更新