gpt4 book ai didi

python - 从 MySQL 获取值并用 if 循环它

转载 作者:太空宇宙 更新时间:2023-11-03 12:30:03 25 4
gpt4 key购买 nike

我有以下代码:

### Write the new userid to the sql database
# Open database connection
db = MySQLdb.connect("sql01.domain1.lan","webuserid","test","webuserid" )
# prepare a cursor object using cursor() method
cursor = db.cursor()



dub_userid = int(userid)
# Check for dublicate of current userid value
sql = "SELECT * FROM webuserid WHERE userid = '"+str(dub_userid)+"'"
try:
# Execute the SQL command
cursor.execute(sql)
# Fetch all the rows in a list of lists.
results = cursor.fetchone()
data = cursor.fetchone()
except:
print "SQL Error: Unable to fetch data"
if data == None:
print "User doesn't exist - Creating"
else:
sys.exit("User exists")

# Prepare SQL query to INSERT a record into the database.
sql = """INSERT INTO webuserid(userid)
VALUES ('"""+userid+"""')"""
try:
# Execute the SQL command
cursor.execute(sql)
# Commit your changes in the database
db.commit()
except:
#Rollback in case there is any error
db.rollback()
# disconnect from server
db.close()

变量 userid 的字符串值为 00001

我想要代码做的是连接到数据库(有效),将 userid 转换为 dub_userid 中的整数,并使用结果值查找重复项。

问题是,当我运行代码时,用户 ID 值为 00001 会发生以下情况:

  1. 用户 ID 1 已提交到数据库(应该这样做,因为没有其他用户 ID 称为 1
  2. 下次运行,用户 ID 1 再次提交到数据库(不应该,因为用户 ID 1 已经存在)
  3. 第三次运行,脚本存在并显示“用户存在”消息。

我已经尝试过数据和数据[1],但似乎无法弄清楚哪里出了问题。

最佳答案

您确实不想使用字符串插值,而是使用 SQL 参数。接下来,您将获取 行;您真正需要做的就是测试是否有任何行:

sql = "SELECT * FROM webuserid WHERE userid = %s"

try:
# Execute the SQL command
cursor.execute(sql, (dub_userid,))
found = cursor.rowcount
except:
print "SQL Error: Unable to fetch data"
if not found:
print "User doesn't exist - Creating"
else:
sys.exit("User exists")

sql = """INSERT INTO webuserid(userid)
VALUES (%s)"""
try:
# Execute the SQL command
cursor.execute(sql, (userid,))
# Commit your changes in the database
db.commit()
except:
#Rollback in case there is any error
db.rollback()
# disconnect from server
db.close()

这可以进一步简化;您可以使用 db 作为上下文管理器来自动提交或在失败时回滚:

with db:
cursor.execute(sql, (userid,))

db.close()

关于python - 从 MySQL 获取值并用 if 循环它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15864181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com