私はプログラミングの初心者です.SQLiteとPythonの学習に少し助けてください。PythonとSQLiteでは、データベースから変数に項目を読み込むにはどうすればよいですか?
現在、私は2つの列を含む "Status.db"と呼ばれるデータベースを持っています。これらの列は「スタンプ」、INT型、「メッセージ」で、TEXTを連続して入力します。
私は次のように「出力」は変数に、特定のスタンプで、メッセージの1つのインスタンスを読み取ろうとするためにIDを使用していますコード:
@cherrypy.expose
def comment(self, ID = None):
con = lite.connect('static/database/Status.db')
with con:
cur = con.cursor()
cur.execute("SELECT messages FROM Status WHERE stamp is ?", (ID,))
temp = cur.fetchone()
output = temp[0]
しかし、私はこのコードを実行すると、
Traceback (most recent call last):
File "/usr/lib/pymodules/python2.7/cherrypy/_cprequest.py", line 606, in respond
cherrypy.response.body = self.handler()
File "/usr/lib/pymodules/python2.7/cherrypy/_cpdispatch.py", line 25, in __call__
return self.callable(*self.args, **self.kwargs)
File "proj1base.py", line 176, in comment
output = temp[0]
TypeError: 'NoneType' object is not subscriptable
このエラーが何を意味するのか、誰かが私にそれを動作させるために行うことができるのかどうかは誰にでも分かりますか?
ありがとうございます!
EDIT: ここで作成され、fetchone()
があなたのSQLクエリが任意の結果行を返すされていないことを意味し、None
を返していることを意味データベース
@cherrypy.expose
def writeStatus(self, newStatus=None, post=None):
"""Update the status file with the most recent status update
by inserting a timestamp and new status into a database
"""
con = lite.connect('static/database/Status.db')
stamp = time()
with con:
cur = con.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS Status(stamp INT, messages TEXT)")
cur.execute("INSERT INTO Status VALUES(?, ?)", (stamp, newStatus))
感謝を。 – Synia
@Synia、データベースにデータがありますか? (もしあなたがデータを持っていれば、データベースにある 'ID'で' comment'を呼び出していますか?) – huon
@dbauppこんにちは、ありがとうございます。データベースにチェックが入っていて、何らかの理由でデータベースに割り当てられたスタンプが小数点以下6桁で、渡されたスタンプが2個しかないことに気付きました。私はすべて整数に変更しました。 – Synia