我正在使用mysqlconnector用python3.x编写一个脚本。我现在要做的是检查我的数据库中是否有一条记录,它可能与我现在正在分析的记录重复。我想出了这样的代码:
def fill_data(self, db_name, data):
cursor = self.cnx.cursor(buffered=True)
isDuplicate = cursor.execute(("SELECT destination FROM {0} WHERE destination = '{1}';")
.format(db_name, data['destination']))
print(cursor.statement)
self.commit()
print(isDuplicate is None)
尽管我还是被复制为无对象。我试图通过cursor.statement检查传递给db的语句是什么:结果是,在脚本中,当传递给db时,我没有得到obj,查询工作正常。我还尝试从db\u name中选择count(1),这也给了我不同的结果。
我没主意了:也许你们能帮我?
更新:
对我有效的解决方案是:
q = ("SELECT * FROM {0} WHERE destination = %s AND countryCode = %s AND prefix = %s")
.format(db_name)
cursor.execute(q, (data['destination'], data['country_code'], data['prefix']))
self.cnx.commit()
isDoubled = cursor.fetchone()
因此,归根结底,这一切都是为了从游标中获取数据:)
1条答案
按热度按时间p1tboqfb1#
也许你的问题是因为你的使用方式
execute()
方法。尝试进行一些更改并查看打印出的内容:
为什么要这样提供查询参数(文章正在发表
psql
,但核心原则与mysql
)更新
如果你还收到
"NoneType" object has no atribute "fetchall"
,则错误可能是:看起来你不是在创造
cursor
完全。我可以看看,如果你张贴一些代码cnx
创造。