2016-03-22 3 views
0
def makeProductTable(): 
"""This creates a database with a blank table.""" 
with connect("products.db") as db: 
    cursor = db.cursor() 

    cursor.execute(""" 
     CREATE TABLE Product(
     ProductID integer, 
     GTIN integer, 
     Description string, 
     StockLevel integer, 
     Primary Key(ProductID));""") 
    db.commit() 

def editStockLevel(): 
with connect("products.db") as db: 
    cursor = db.cursor() 
    Product_ID=input("Please enter the id of the product you would like to change: ") 
    Stock_Update=input("Please enter the new stock level: ") 
    sql = "update product set StockLevel = ('Stock_Update') where ProductID = ('Product_ID');" 
    cursor.execute(sql) 
    db.commit() 
return "Stock Level Updated." 

Первая функция используется, чтобы сделать таблицу, и она показывает названия столбцов, вторая функция необходима для обновления определенного значения в таблице.(Python) cursor.execute (sql)

Но когда это выполняется, входы выполняются, однако, когда все отображают все продукты в таблице, значение для уровня запаса не изменяется.

Поэтому я думаю, что проблема имеет какое-то отношение к строке cursor.execute (sql).

ответ

0

Или что-то в этом роде?

cur.execute("UPDATE Product set StockLevel = ? where ProductID = ?",(Stock_Update,Product_ID)) 
+0

спасибо, этот исправленный мой код. – JW2209

+0

@ JW2209. Если он работает, отметьте его как ответ. Благодарю. – KR29

0

Да; вы передаете литеральные строки вместо значений, возвращаемых из ваших входных вызовов. Вам нужно использовать параметры в инструкции и передать запрос на выполнение.

sql= "update product set StockLevel = %s where ProductID = %s;" 
cursor.execute(sql, (Stock_Update, Product_ID)) 
Смежные вопросы