我试图执行相同的查询,但数据不同,但我总是第一次得到数据。其他时候,如果数据库中有查询的数据,mysql返回空数据。你知道吗
代码如下:
def get_team_colour_map(self, players, id_competition):
tcm = FIBAColourMap()
for p in players:
args = [p["id"], id_competition]
conn = pymysql.Connect(host = DDBB.DDBB_FIBA_HOST,
user = DDBB.DDBB_FIBA_USER,
password = DDBB.DDBB_FIBA_PSWD,
db = DDBB.DDBB_FIBA_NAME,
charset = DDBB.DDBB_FIBA_CHARSET,
cursorclass=pymysql.cursors.DictCursor)
with conn.cursor() as cursor:
print("id player: {}".format(p["id"]))
print("args: {}".format(args))
cursor.execute("select sc.* from tbl030_shots_chart sc, tbl006_player_team pt, tbl007_game g, tbl004_jornada j, tbl012_competition c where pt.id = %s and pt.id_player_feb = sc.id_fiba and sc.id_game = g.id and g.id_jornada = j.id and j.id_competition = c.id and c.id = %s", args)
data = cursor.fetchall()
print("data: {}".format(data))
print("Total rows: {}".format(cursor.rowcount))
if cursor.rowcount > 0:
for s in data:
x = float(FIBASCReport.adjust_x(s["x"]))
y = float(FIBASCReport.adjust_y(s["y"]))
color = tcm.image.getpixel((x,y))
color = ("#%02x%02x%02x" % color).upper()
if tcm.exists_color(color):
if int(s["m"]) == 0:
tcm.set_scored_shots(color, 1)
else:
tcm.set_failed_shots(color, 1)
else:
if int(s["m"]) == 0:
tcm.set_scored_shots("OTROS", 1)
else:
tcm.set_failed_shots("OTROS", 1)
else:
#tcm = None
print("Jugadora con id: {} NO ha realizado ningún tiro en competición: {}".format(p["id"], id_competition))
return tcm
在这个代码中,游标.fetchall()返回第一个查询的数据,但下一个查询返回空结果。你知道吗
我怎样才能运行几个查询?我使用的是mySQL 8.0和Python 3.6
这是因为每次都使用同一个光标。每次循环执行查询时,都要创建一个新的游标实例。在运行第一个查询之后,光标已经位于所有数据之后。因此在那之后没有返回行
您也可以尝试以下方法:
查看文档以了解MySQLCursor.execute文件(). 你知道吗
它声称您可以传入一个多参数,该参数允许您在一个字符串中运行多个查询。你知道吗
如果multi设置为True,execute()可以执行操作字符串中指定的多个语句。你知道吗
multi是execute()调用的第二个可选参数:
相关问题 更多 >
编程相关推荐