2016-12-05 22 views
-1

我有做更新查询数据库的方法:如何执行更新Mysql Python?

def update(url, status): 
    try: 

     cur = conn.cursor() 
     cur.execute("""UPDATE apps SET status=%s WHERE id = 1""", (status)) 
     conn.commit() 
     print("Updated: " + url) 

    except: 
     print("Update error: " + url) 

它给了我exeption始终。

conn对象在另一个函数定义的,首先被称为:

def connectDB(): 
    global cur 
    global conn 

    db = { 
     'user': 'root', 
     'password': '', 
     'database': 'g' 
    } 

    """ Connect to MySQL database """ 
    try: 
     conn = mysql.connector.connect(host='localhost', 
             database=db['database'], 
             user=db['user'], 
             password=db['password']) 
     if conn.is_connected(): 
      pass 


    except Error as e: 
     print(e) 

    finally: 
     print("MySQL Done...") 

所以,堆是:

connectDB(); 

for link in links: 
    update(link, 1) 
+0

你应该说你得到了什么异常。你通过使用空白隐藏任何东西,除了; *不要*这样做,让异常显示,以便您可以调试。 –

回答

1

在这一行:

cur.execute("""UPDATE apps SET status=%s WHERE id = 1""", (status)) 

参数应作为元组传递给cur.execute()。围绕单个项目添加括号不是元组,它是一个表达式。试试这个:

cur.execute("""UPDATE apps SET status=%s WHERE id = 1""", (status,)) 

在这里,在(status,),,使所有的差异;该论点现在是一个元组。

+0

但是,如果我需要使用'LIKE'%parameter%''? – MisterPi

+0

然后它应该是:'cur.execute(“”“UPDATE apps SET status =%s WHERE app_url LIKE'%%% s %%'”“”,(url,status,))'? – MisterPi

+0

我仍然收到错误异常:'insert =(“”“insert into app(app_url)values('%s')”“”,(url url)) – MisterPi