我遇到了mysql连接器的问题。我确实搜索了一段时间,但一无所获。
如果我执行只有查询的第一个文件,它会按预期工作。但是如果我尝试创建一个db类并将查询放在那里,它将返回None。我取出了位置变量,它是一样的。无论我尝试查询什么,它都会返回None。我甚至试图做一个“SHOW TABLES”,它返回None。
另外,我在调试器中运行它并查看游标对象以确定,以及mysql常规日志。查询是正确的,一切看起来都应该给我。
这是我第一次尝试使用python,我希望解决方案是一个简单的新手错误。
有效的查询: 的 test.py
import mysql.connector
_config = {
'user': 'user',
'password': 'password',
'host': '127.0.0.1',
'database': 'testdb',
'raise_on_warnings': True,
}
cnx = mysql.connector.connect(**_config)
cursor = cnx.cursor()
query = ("SELECT * FROM testtbl WHERE location=%s")
location='HERE'
cursor.execute(query, (location, ))
print("--- " + str(cursor) + " ----")
for (stuff) in cursor:
print("stuff: '" + stuff[0] + "', more stuff: '" + stuff[1] + "'")
cursor.close()
cnx.close()
那些不起作用的: somedb.py
import mysql.connector
class SomeDB(object):
def __init__(self):
_config = {
'user': 'user',
'password': 'password',
'host': '127.0.0.1',
'database': 'testdb',
'raise_on_warnings': True,
}
self.conn = mysql.connector.connect(**_config)
self.cur = self.conn.cursor()
def get_stuff(self):
query = ("SELECT * FROM testtbl WHERE location=%s")
location="HERE"
result = self.cur.execute(query, (location, ))
return result
def __del__(self):
self.conn.close()
根据Alu的建议,我将get_stuff方法更改为:
def get_nodes(self):
query = ("SELECT * FROM testtbl WHERE location=%s")
location="HERE"
cursor = self.cur.execute(query, (location, ))
list = []
for (thing) in cursor:
list.append(([thing[0],thing[1]]))
return list
test2.py
import somedb
db = somedb.SomeDB()
cursor = db.get_stuff()
print("--- " + str(cursor) + " ----")
for (stuff) in cursor:
print("stuff: '" + stuff[0] + "', more stuff: '" + stuff[1] + "'")
好的,我无法让它发挥作用。我已经使用调试器和类抽象一起完成了这个代码,其他所有看起来都是相同的。所以让我改进一下我的问题:这可能与任何mysql驱动程序有关吗?这就是我想要做的事:https://softwareengineering.stackexchange.com/questions/200522/how-to-deal-with-database-connections-in-a-python-library-module
我找到了它!
result = self.cur.execute(query, (location, ))
return result
需要,简单地说:
self.cur.execute(query, (location, ))
return self.cur
答案 0 :(得分:1)
据我记得,你必须在每次交易后提交连接。
您可以尝试将此作为示例。这是我的数据库类。 https://github.com/CatCookie/DomainSearch/blob/master/src/additional/database.py