列に同様の値を持つ行からデータを取得:sqlite3のは、私は、テーブルは以下のように設定している
Mobs
========
Name Room
-----------
a cat 2
fido 2
human 1
が、私は、各行は部屋の同じ値を持っている場合は名前を抽出し、SQLクエリステートメントを設定しようとしています。
これは、これまでの私のコードですが、それは空のリストを返します:しようと
class DBConnect(object):
gamedb = 'game.db'
def __init__(self):
pass
############ TABLE PlayerInfo ###################
def modify_data(self, string, dbfile, mode='get', fetch='all'):
db = sqlite3.connect(dbfile)
db.row_factory = lambda cursor, row: row[0]
c = db.cursor()
data = ''
if mode == 'get':
c.execute(string)
if fetch == 'all':
data = c.fetchall()
elif fetch == 'one':
data = c.fetchone()
db.close()
return data
elif mode == 'update' or mode == 'insert':
# update data
c.execute(string)
db.commit()
db.close()
else:
print 'Something went wrong\nAborting Program...'
sys.exit()
def mob_getname(self, value, using="id"):
if using == "id":
query = "SELECT name FROM Mobs WHERE ID=%s" % value
return DBConnect().modify_data(query, DBConnect.gamedb)[0]
elif using == "room":
query = "SELECT name, room from Mobs " \
"GROUP BY name, room " \
"HAVING COUNT(name) > 1"
return DBConnect().modify_data(query, DBConnect.gamedb)
else:
print 'Wrong value of using'
return None
:
print Mobs().mob_getname(2, using="room")
は空のリストを思い付きますか?
私は
['a cat', 'fido']
はありがとう示し一覧を取得したい
UPDATE :::私が実行されますクエリ置き換える試してみました
:
query = "SELECT COUNT(*), room FROM Mobs GROUP BY Mobs " \
"SELECT COUNT(*), room FROM Mobs GROUP BY room HAVING COUNT(*)>1 " \
"SELECT name FROM Mobs WHERE room=%s " % value
を
エラーが発生する:sqlite3.OperationalError:near "SELECT":構文エラー
私はあなたがそれぞれの「によって何を意味するのか理解していません行には同じ値の部屋があります "。あなたの望む結果は、部屋の値が2のすべての行です。 – bitfiddler