2017-05-24 6 views
-1

PythonとSqlite3の使用 sqliteから値をフェッチし、変数に格納してから文字列を追加して更新できますか?どのようにsqliteの値を取得し、それを更新することができます

import sqlite3 

connection = sqlite3.connect("intel.db") 
database = connection.cursor() 

u     = 'Zero' 
all  = database.execute("SELECT * FROM logs") 
newtext = ' message.content ' 

for w in all: 
    if u in w[1]: 
     print("exist") 
     olddata = database.execute("SELECT logtext FROM logs where loguser=? ", (u)) 

     ## use olddata + newtext then add to updated 

     updated = database.execute("UPDATE logs SET logtext = ? WHERE loguser = ?", (olddata + newtext, u,)) 
     print("User textlog updated") 
    break 

答えて

0

はい、できますが、あなたはそれを私は新しいDBを作成したの下に、正しい構文を知っているし、2つのレコードのデータを挿入し、DBから値を取得して更新する必要があります。

import sqlite3 
conn = sqlite3.connect('intel.db') 
database = conn.cursor() 
database.execute('''CREATE TABLE logs 
      (date text, logtext text, loguser text, qty real, price real)''') 

# Insert a row of data 
database.execute("INSERT INTO logs VALUES ('2006-01-05','HI','Zero',100,35.14)") 
database.execute("INSERT INTO logs VALUES ('2006-01-03','HELLO','David',100,35.14)") 

# Save (commit) the changes 
conn.commit() 

u = 'Zero' 
all_data = database.execute("SELECT * FROM logs") 
newtext = ' message.content ' 
for w in all_data: 
    if u in w: 
     print("exist") 
     olddata = database.execute("SELECT logtext FROM logs where loguser=? ", (u,)).fetchone()[0] 
     print "Old Data:" 
     print olddata 
     database.execute("UPDATE logs SET logtext = ? WHERE loguser = ?", (olddata + newtext, u,)) 
     conn.commit() 
     newdata = database.execute("SELECT * FROM logs where loguser=? ", (u,)).fetchone() 
     print "New Data:" 
     print newdata 
conn.close() 

出力は次のようになります。あなたが見ることができるように

exist 
Old Data: 
HI 
New Data: 
(u'2006-01-05', u'HI message.content ', u'Zero', 100.0, 35.14) 

HIは、新しいデータHI message.contentで更新されました。

関連する問題