我有一個表設置了樣柱: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:靠近「SELECT」:語法錯誤
我不明白你所說的「各是什麼意思行具有相同的房間價值「。你想要的結果是房間值爲2的所有行。 – bitfiddler