2008-12-31 7 views
-1

J'ai un petit problème avec un programme qui écrit. J'ai une table - stocks qui contient des informations (produits, codes à barres, etc.) sur les articles stockés dans un réfrigérateur. J'ai alors une autre table-shop qui se comporte comme une boutique, contenant beaucoup de produits et leurs codes-barres. Certains des produits de la table de magasin sont dans la table de stock pour le moment, et il y a un champ booléen appelé stock qui nous dit ce produit est dans la table de stock ou pas, s'il est égal à 1, il est dans le frigo, s'il est égal à 0, il n'est pas dans le frigo. Deux champs dans la table des stocks sont le montant et la quantité. La quantité est ce qui est dans le réfrigérateur pour le moment, la quantité est ce qui doit être dans le réfrigérateur à tout moment. Lorsque quelque chose est sorti du réfrigérateur, la quantité de ce produit diminue de 1. Chaque code à barres dans la table des stocks a un correspondant dans la table de la boutique. Je dois faire une requête à la base de données à partir d'un programme python qui va commander des produits de la table des magasins lorsque le montant (ce qui est dans le réfrigérateur) est inférieur à la quantité (ce qui est censé être dans le réfrigérateur à tout moment). Vous devez donc prendre le code à barres d'une rangée dans la table des stocks où le montant est inférieur à la quantité et faire correspondre cela avec le code à barres dans la table des magasins. Ensuite, dans la rangée de ce code-barres correspondant, vous devez mettre en stock = 1.Rendre la valeur d'une table égale à une autre valeur dans une table différente

Je serais vraiment heureux si quelqu'un pouvait m'aider avec cela car je trouve vraiment difficile d'écrire cette fonction. Voici les fonctions d'archivage et de paiement si cela peut vous aider.

checkin

def check_in(): 
    db = MySQLdb.connect(host='localhost', user='root', passwd='$$', db='fillmyfridge') 
    cursor=db.cursor(MySQLdb.cursors.DictCursor) 
    user_input=raw_input('please enter the product barcode that you wish to checkin to the fridge: \n') 
    cursor.execute("""update shop set stock = 1 where barcode = %s""", (user_input)) 
    db.commit() 
    numrows = int(cursor.rowcount) 
    if numrows >= 1: 
     row = cursor.fetchone() 
     print row["product"] 
     cursor.execute('update stock set amount = amount + 1 where product = %s', row["product"]) 
     db.commit() 
     cursor.execute('udpate shop set stock = 1 where barcode = user_input') 
     db.commit() 
    else: 
     new_prodname = raw_input('what is the name of the product and press enter: \n') 
     cursor.execute('insert into shop (product, barcode, category) values (%s, %s, %s)', (new_prodname, user_input, new_prodname)) 
     cursor = db.cursor() 
     query = ('select * from shop where product = %s', (new_prodname)) 
     cursor.execute(query): 
     db.commit() 
     numrows = int(cursor.rowcount) 
     if numrows<1: 
      cursor.execute('insert into atock (barcode, quantity, amount, product) values (%s, 1, 1, %s)', (user_input, new_prodname)) 
      db.commit() 
      cursor.execute('insert into shop (product, barcode, category, stock) values (%s, %s, %s, 1)', (new_prodname, user_input, new_prodname)) 
      print new_prodname 
      print 'has been added to the fridge stock' 
     else: 
      cursor.execute('update atock set amount = amount + 1 where product = %s', (new_prodname)) 
      db.commit() 
      cursor.execute('insert into shop (product, barcode, category, stock) values (%s, %s, %s, 1)', (new_prodname, user_input, new_prodname)) 
      print new_prodname 
      print 'has been added to the fridge stock' 

caisse

import MySQLdb 

def check_out(): 
    db = MySQLdb.connect(host='localhost', user='root', passwd='$$', db='fillmyfridge') 
    cursor=db.cursor() 
    user_input=raw_input('please enter the product barcode you wish to remove from the fridge: \n') 
    query = cursor.execute('update stock set instock=0, howmanytoorder=howmanytoorder + 1, amount = amount - 1 where barcode = %s', (user_input)) 
    if cursor.execute(query): 
     db.commit() 
     print 'the following product has been removed from the fridge nd needs to be ordered' 
     cursor.execute('update shop set stock = 0 where barcode = %s' (user_input) 
     db.commit() 
    else: 
     return 0 
+0

Vous devez briser cette question dans certains paragraphes ... son tout à fait difficile de comprendre ce que le problème réel est. –

+0

Je peux voir le code pas bien structuré, redondant et non fonctionnel avec des fautes de frappe dans les noms de tables "insert into atock" - "atock" au lieu de "stock". Pouvez-vous casser votre question comme Simon suggéré et coller un code de travail, s'il y en a.Aussi, je vais suggérer ORM au lieu d'un DBAPI, le cas échéant. –

+0

-1: la question n'a pas de paragraphes, tous en minuscules. Ne peut pas investir le temps dans l'analyse. –

Répondre

0

Essayez de faire de la question plus courte. Cela générera plus de réponses, je suppose.

1

Donc, si je suis arrivé ce droit, vous avez les tableaux suivants:

Stock avec au moins un code à barres, quantité et quantité colonne

Boutique avec au moins un code à barres et un stock colonne

Je ne comprends pas pourquoi vous avez besoin que stock colonne dans la table de magasin, parce que vous pouvez facilement obtenir les produits qui sont en stock en utilisant une jointure comme ceci:

SELECT barcode, ... FROM Stock ST JOIN Shop SH ON ST.barcode = SH.barcode; 

Il est évident que vous devez également sélectionnez d'autres colonnes de la table Shop ou sinon vous pouvez simplement sélectionner tout dans la table Stock.

Vous pouvez obtenir une liste des produits qui doivent être commandés (lorsque le montant est inférieur à la quantité):

SELECT barcode FROM Stock ST WHERE ST.amount < ST.quantity; 
+0

+1 pour avoir lu la question et donner quelques conseils ... –

Questions connexes