2

试图解析 print 语句中的变量。

client = fabric.operations.prompt("Enter client's email address:")
cmd = 'mysql -u %s -p%s -e "UPDATE users SET email = ' %(env.user, dbpasswd) + '"%client"' + ' WHERE id = 1" %s' %account
print cmd

结果:

mysql -u root -password -e "UPDATE users SET email = %client WHERE id = 1" demo

期望的结果:

mysql -u root -password -e "UPDATE users SET email = 'abc@xyz.com' WHERE id = 1" demo
4

2 回答 2

3

我很惊讶没有人提到新的字符串格式化选项:

cmd = 'mysql -u {user} -p{passwd} -d "UPDATE users SET email = {email} WHERE id = 1" {account}'.format(user=env.user, passwd=dbpasswd, email=client, account=account) 
于 2012-07-31T12:04:09.563 回答
2
cmd = 'mysql -u %s -p %s -e "UPDATE users SET email = ' %(env.user, dbpasswd) + "'%s'" % client + ' WHERE id = 1" %s' % account

那应该解决它。您需要用%client的值替换client

于 2012-07-31T11:48:46.550 回答