我有一个正常工作的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和(测试版)mariadb连接器打印none
。 不会引发任何异常。 如果我print
连接或游标变量,它们似乎在代码中的适当位置具有有效内容。 只有execute
的输出似乎是错误的。 这是在树莓派OS上,如果那很重要的话。
我可能会错过什么?
mysql.connector
基于Python Database API Specification v2.0(link)
,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