【问题标题】:Delete from database in Python在 Python 中从数据库中删除
【发布时间】:2016-08-30 10:04:46
【问题描述】:

我有deleteuser.py 我需要删除一个用户,这里是代码:

# Import modules for CGI handling
import MySQLdb
import cgi, cgitb

# Open database connection
db = MySQLdb.connect("localhost", "root", "", "moviedb" )

# prepare a cursor object using cursor() method
cursor = db.cursor()

# Create instance of FieldStorage 
form = cgi.FieldStorage() 

# Get data from fields
iduser = form.getvalue('iddelete')

# execute SQL query using execute() method.
try:
    cursor.execute("""DELETE FROM user WHERE
         ID = '%s'""",(iduser))
    # Commit your changes in the database
    db.commit()
except:
    db.rollback()

# disconnect from server
db.close()

print "Content-Type: text/plain;charset=utf-8"
print

我没有错误,但它不起作用。 数据库还是一样的。

谢谢

【问题讨论】:

  • 不要将代码放入 cmets,编辑问题。
  • 你小心翼翼地隐藏了所有可能出现的错误,这个包罗万象的except 块。 删除,这样您就可以看到实际出了什么问题。永远不要盲目地捕捉和吞下异常。
  • 我已经删除了 try-catch,现在我有这个错误:在标题之前结束脚本输出
  • 谢谢你,这对我帮助很大。现在我已经发布了答案

标签: python mysql sql mysql-python


【解决方案1】:

答案如下:

#!/Python27/python
# -*- coding: UTF-8 -*-


# Import modules for CGI handling
import MySQLdb
import cgi, cgitb

# Open database connection
db = MySQLdb.connect("localhost", "root", "", "moviedb" )

# prepare a cursor object using cursor() method
cursor = db.cursor()

# Create instance of FieldStorage 
form = cgi.FieldStorage() 

# Get data from fields
iduser = form.getvalue('iddelete')

# execute SQL query using execute() method.
query = "delete from user where id = '%s' " % iduser
cursor.execute(query)
    # Commit your changes in the database
db.commit()

# disconnect from server
db.close()

print "Content-Type: text/plain;charset=utf-8"
print

【讨论】:

  • 感谢您发布答案。但是,不要忘记具体说明错误是什么以及您如何解决它,以便将来从您的答案中受益。
  • 现在,想象一下如果从 cgi 获得的iduserNULL; DROP TABLE user 会发生什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
  • 1970-01-01
  • 2011-07-12
  • 2019-08-12
相关资源
最近更新 更多