If 语句未返回所需结果
If statement not returning the desired result
我是 Python 的新手,我认为我的代码出现问题是因为我是新手,并且有一些理论或我还不熟悉的东西。
是的,之前有人问过这个问题,但与我的不同。相信我,我已经尝试了所有我认为需要做的事情。
一切正常,直到我将所有内容添加到“if five in silos”语句中。
在我输入 6 个输入函数的值后,程序以退出代码 0 结束。没有其他任何事情发生。 for循环未启动。
我希望代码在提示为“五”变量输入内容时接受 103 或 106。
我正在使用 PyCharm 和 Python 3.7.
import mysql.connector
try:
db = mysql.connector.connect(
host="",
user="",
passwd="",
database=""
)
one = int(input("Number of requested telephone numbers: "))
two = input("Enter the prefix (4 characters) with a leading 0: ")[:4]
three = int(input("Enter the ccid: "))
four = int(input("Enter the cid: "))
six = input("Enter case number: ")
five = int(input("Enter silo (103, 106 only): "))
cursor = db.cursor()
cursor.execute(f"SELECT * FROM n1 WHERE ddi LIKE '{two}%' AND silo = 1 AND ccid = 0 LIMIT {one}")
cursor.fetchall()
silos = (103, 106)
if five in silos:
if cursor.rowcount > 0:
for row in cursor:
seven = input(f"{row[1]} has been found on our system. Do you want to continue? Type either Y or N.")
if seven == "Y":
cursor.execute(f"INSERT INTO n{five} (ddi, silo, ccid, campaign, assigned, allocated, "
f"internal_notes, client_notes, agentid, carrier, alias) VALUES "
f"('{row[1]}', 1, {three}, {four}, NOW(), NOW(), 'This is a test.', '', 0, "
f"'{row[13]}', '') "
f"ON DUPLICATE KEY UPDATE "
f"silo = VALUES (silo), "
f"ccid = VALUES (ccid), "
f"campaign = VALUES (campaign);")
cursor.execute(f"UPDATE n1 SET silo = {five}, internal_notes = '{six}', allocated = NOW() WHERE "
f"ddi = '{row[1]}'")
else:
print("The operation has been canceled.")
db.commit()
else:
print(f"No results for prefix {two}.")
else:
print("Enter either silo 103 or 106.")
cursor.close()
db.close()
except (ValueError, NameError):
print("Please, enter an integer for all questions, except case number.")
因为它必须是:
for row in cursor.fetchall():
// do something
在你的代码中 cursor
returns 由 db.cursor()
定义的 Python Class 但你需要调用 fetchall()
函数来读取其中包含的行。
您实际上是在调用 cursor.fetchall()
而没有对其进行任何操作,您可以将调用分配给一个变量,然后执行此操作:
result = cursor.fetchall()
for row in result:
//do something
我发现了问题:我必须将 cursor.fetchall()
存储到一个变量中。
在我把: eight = cursor.fetchall()
放在“筒仓”元组之前,一切都完美无缺。
我是 Python 的新手,我认为我的代码出现问题是因为我是新手,并且有一些理论或我还不熟悉的东西。
是的,之前有人问过这个问题,但与我的不同。相信我,我已经尝试了所有我认为需要做的事情。
一切正常,直到我将所有内容添加到“if five in silos”语句中。 在我输入 6 个输入函数的值后,程序以退出代码 0 结束。没有其他任何事情发生。 for循环未启动。
我希望代码在提示为“五”变量输入内容时接受 103 或 106。
我正在使用 PyCharm 和 Python 3.7.
import mysql.connector
try:
db = mysql.connector.connect(
host="",
user="",
passwd="",
database=""
)
one = int(input("Number of requested telephone numbers: "))
two = input("Enter the prefix (4 characters) with a leading 0: ")[:4]
three = int(input("Enter the ccid: "))
four = int(input("Enter the cid: "))
six = input("Enter case number: ")
five = int(input("Enter silo (103, 106 only): "))
cursor = db.cursor()
cursor.execute(f"SELECT * FROM n1 WHERE ddi LIKE '{two}%' AND silo = 1 AND ccid = 0 LIMIT {one}")
cursor.fetchall()
silos = (103, 106)
if five in silos:
if cursor.rowcount > 0:
for row in cursor:
seven = input(f"{row[1]} has been found on our system. Do you want to continue? Type either Y or N.")
if seven == "Y":
cursor.execute(f"INSERT INTO n{five} (ddi, silo, ccid, campaign, assigned, allocated, "
f"internal_notes, client_notes, agentid, carrier, alias) VALUES "
f"('{row[1]}', 1, {three}, {four}, NOW(), NOW(), 'This is a test.', '', 0, "
f"'{row[13]}', '') "
f"ON DUPLICATE KEY UPDATE "
f"silo = VALUES (silo), "
f"ccid = VALUES (ccid), "
f"campaign = VALUES (campaign);")
cursor.execute(f"UPDATE n1 SET silo = {five}, internal_notes = '{six}', allocated = NOW() WHERE "
f"ddi = '{row[1]}'")
else:
print("The operation has been canceled.")
db.commit()
else:
print(f"No results for prefix {two}.")
else:
print("Enter either silo 103 or 106.")
cursor.close()
db.close()
except (ValueError, NameError):
print("Please, enter an integer for all questions, except case number.")
因为它必须是:
for row in cursor.fetchall():
// do something
在你的代码中 cursor
returns 由 db.cursor()
定义的 Python Class 但你需要调用 fetchall()
函数来读取其中包含的行。
您实际上是在调用 cursor.fetchall()
而没有对其进行任何操作,您可以将调用分配给一个变量,然后执行此操作:
result = cursor.fetchall()
for row in result:
//do something
我发现了问题:我必须将 cursor.fetchall()
存储到一个变量中。
在我把: eight = cursor.fetchall()
放在“筒仓”元组之前,一切都完美无缺。