2016-03-29 11 views
-1

Bir veritabanında aynı satırdaki 2 değeri okumaya çalışıyorum ancak yalnızca tüm satırı bir kerede okuyabilecek kadar iyiyim. Ben alakadar ettiğini düşündüğünüz tüm kodu eklemiş:Bir veritabanındaki sqlite ile aynı satırdaki tek tek değerleri nasıl okuyorsunuz?

def find(search, term): 
     # Helper function for the find function. 
     with connect("GTINb.db") as db: 
      cursor = db.cursor() 
      sql = "select * from GTINb where {} = ?".format(search) 
      cursor.execute(sql,(term,)) 
      db.commit() 
      results = cursor.fetchall() 
      new = str(term) 
      if results: 
       results = str(results) 
       temp = open('temp.txt', 'a') 
       temp.write(results) 
       temp.write('\n') 
       temp.close() 
       with connect("GTINb.db") as db: 
        cursor.execute("UPDATE GTINb SET stockcur=stockcur-1 WHERE GTIN8=(?)",(new,)) 
        cur = cursor.execute("SELECT stockcur from GTINb by (?)",(new,)) 
        re = cursor.execute("SELECT restock from GTINb by (?)",(new,)) 
        if cur < re: 
         cursor.execute("UPDATE GTINb SET stockcur=stockcur+10 WHERE GTIN8=(?)",(new,)) 
         return print('More stock has been ordered in as stocks were low') 
        else: 
         return 
      else: 
       temp = open('temp.txt', 'a') 
       temp.write('Product not found') 
       temp.write('\n') 
       temp.close() 
       return 

Şu anda hata sqlite3.OperationalError: near "(": syntax error alacağım, '(?)' % S ile, (% s) ve değiştirme denedi? Hiçbir başarı ile, aşağıdaki hata mesajları ile geliyor:

sqlite3.OperationalError: near "12345670": syntax error // where 12345670 was the input represented by new 
sqlite3.OperationalError: near "(": syntax error 
sqlite3.OperationalError: near "?": syntax error 

Bunu yaparken ya da ben basit bir hata yapmış bir başka yolu var mı?

+0

'(?)' Ifadesi ne anlama geliyor? '' '' 'GROUP BY' ya da' ORDER BY' parçası olarak kullanılabilir. – Barmar

+0

Yani "GRINb" tablosunun takma adı olarak davranıyor ve SQL'de bu noktada bir "WHERE" maddesini (veya başka bir yan tümcesi) bekler, ancak '(?) 'Bulur; mantıklı. – Barmar

+0

@Barmar, (?) Tarafından, kullanıcı girdisi olan satırdaki bilinen değere başvurmak için kullanılır ve ayrıca hata muhtemelen – Beginner

cevap

1

Yazdığınız SQL deyimlerinin hiçbiri geçerli SQL değil. Geçerli sözdizimi için lütfen SQLite documentation'a danışın.

Kısaca: İlki muhtemelen gereksiz parantez ile çalıştırır rağmen

UPDATE GTINb SET stockcur=stockcur-1 WHERE GTIN8=(?) 
SELECT stockcur from GTINb by (?) 
SELECT restock from GTINb by (?) 

UPDATE GTINb SET stockcur=stockcur-1 WHERE GTIN8 = ? 
SELECT stockcur FROM GTINb WHERE GTIN8 = ? 
SELECT restock FROM GTINb WHERE GTIN8 = ? 

olmalıdır.

Eğer ikinci iki ifade Sana soran ne olduğuna inanıyoruz

SELECT stockcur, restock FROM GTINb WHERE GTIN8 = ? 

birleştirilebilir olduğunu göreceksiniz çalışmasını SQL sahip olduktan sonra.

+0

vardı sorun oldu O da doğru olarak döndürülen değerleri okumak bilmiyorum görünüyor, bu cevaba eklemelisiniz. – Barmar

İlgili konular