【问题标题】:How to update mysql data using django?如何使用 django 更新 mysql 数据?
【发布时间】:2016-12-26 05:58:03
【问题描述】:

如何通过django更新mysql数据?我也没有收到任何错误。

views.py

def update_db_data(request):
    conn = MySQLdb.connect(host= "localhost", user="test_user", passwd="test_pwd",db="myproject")
    cursor = conn.cursor()
    try:
        cursor.execute("UPDATE user SET user_name = 'test'")
        print("sucess")
        html = "<html><body>sucess</body></html>"
        conn.commit()
    except:
        print("fail")
        html = "<html><body>fail</body></html>"
        conn.rollback()
    conn.close()
    return HttpResponse(html)

请告诉我代码中的问题出在哪里。 如何进行条件更新?

eg:- UPDATE user SET user_name = 'test' where id =2;

【问题讨论】:

  • 这个简单的查询可以使用 Django-ORM。为什么不使用呢?

标签: python mysql django


【解决方案1】:

您的表名是user,但USER 是mysql 中的保留关键字。也许这是导致错误的原因。

http://dev.mysql.com/doc/refman/5.7/en/keywords.html

如下实现 finally 块,看看是否收到错误响应。

def update_db_data(request):
    conn = MySQLdb.connect(host= "localhost", user="test_user", passwd="test_pwd",db="myproject")
    cursor = conn.cursor()
    try:
        cursor.execute("UPDATE user SET user_name = 'test'")
        print("sucess")
        html = "<html><body>sucess</body></html>"
        conn.commit()
    except:
        print("fail")
        html = "<html><body>fail</body></html>"
        conn.rollback()
    finally:
        conn.close()
        return HttpResponse(html)

【讨论】:

  • USER 是关键字.. user 不是关键字。我用来向表中插入数据并从表中选择数据的同一个用户表没有问题。更新数据是问题。请帮我解决这个问题
  • 将最后两行放在finally 块中,看看是否收到错误响应。
  • 您是否尝试将 python 代码与 django 隔离并作为 python 脚本运行以查看它是否正常工作?
【解决方案2】:

对于这样的条件查询:

UPDATE user SET user_name = 'test' where id =2;

您可以在 settings.py 文件中为数据库设置默认参数,如下所示:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'myproject',
        'USER': 'test_user',
        'PASSWORD': 'test_pwd',
        'HOST': 'localhost',
    }
}

然后使用 Django ORM 更新用户名,

from django.contrib.auth.models import User
def update_db_data(request):

    try:
        user_obj = User.objects.get( id = 2 )
        user_obj.user_name = "test"
        user_obj.save()
        print("sucess")
        html = "<html><body>sucess</body></html>"

    except:

        print("fail")
        html = "<html><body>fail</body></html>"

    return HttpResponse(html)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    相关资源
    最近更新 更多