我正在使用自定义的Django安装,虽然我正在处理的问题来自用于更新数据库的命令行工具。该工具按预期读取数据库,并且与在MySQL命令行中键入SELECTs相比具有相同的功能。但是,似乎永远不会更改数据库。我尝试了一些变体,包括试用execute()
我希望用于试用目的的文字查询,但它没有做任何事情,没有报告异常或错误就失败了。 MySQL命令行可以很好地处理更新。
我的代码,包括可操作的面向读取的代码和静默失败的面向编写的代码(以清理形式):
#!/usr/bin/python
import MySQLdb
import sys
connection = MySQLdb.connect(user='root', passwd="_______________")
cursor = connection.cursor()
cursor.execute('USE _____________')
if __name__ == '__main__':
if sys.argv[1] == 'check': # This seems to work
username = sys.argv[2]
cursor.execute(
'''SELECT username, foo FROM auth_user WHERE username = %s''',
[username])
for result in cursor:
print 'Username: ' + result[0]
print 'Foo: ' + str(result[1])
if sys.argv[1] == 'set': # This seems to function as a noop
username = sys.argv[2]
foo = int(sys.argv[3])
cursor.execute('UPDATE auth_user SET foo = ' + str(foo) +
" WHERE username = '" + username.replace("'", "\\'") + "'")
我应该采取哪些其他步骤来更新给定行上的字段foo?更新查询是故意愚蠢的SQL,但我不想在我的文字版本工作之前专注于复杂性。
谢谢,
答案 0 :(得分:2)
您需要提交数据
cursor.execute('UPDATE auth_user SET foo = ' + str(foo) + " WHERE username = '" + username.replace("'", "\\'") + "'")
connection.commit()
查看documentation以获取更多信息