[英]Export QTABLEWIDGET's data (Columns, rows , everything, ...) to SQLITE3
[英]Sqlite3 Obtaining Data From Rows with Similar values in columns
我有一個像這樣設置的表:
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']
謝謝
更新:::
我嘗試用以下命令替換執行的查詢:
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”附近:語法錯誤
您沒有正確使用group by並正確設置了子句。 分組依據將嘗試對與該列匹配的所有列進行分組。 因此,如果按名稱分組,則所有行都不會折疊,也不會匹配count> 1的條件
如果我在閱讀您的問題,您只需要
SELECT name FROM mobs WHERE room = %s
因為您提前知道房間號。
請注意,您的第二次嘗試失敗了,因為您需要; 您的查詢之間
您不能僅將多個獨立的SELECT查詢一個接一個地放置。
您需要使用GROUP BY來確定包含多個條目的房間,然后需要單獨的查詢以返回這些房間的所有條目:
SELECT Name, Room
FROM Mobs
WHERE Room IN (SELECT Room
FROM Mobs
GROUP BY Room
HAVING COUNT(*) > 1);
要獲得所需的期望結果列表,您的查詢將簡單地是:
select Name from Mobs where Room = 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.