我有一个正常运行的MariaDB服务器。当使用自己的客户端软件本地登录时,或者通过远程计算机(例如 Navicat(连接到时,它会按预期工作。以这些方式连接时,它会按预期响应所有SELECT
和INSERT
命令。
但是我无法让它响应 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