2016-07-04 51 views
1

我正在研究一款可以存儲客戶端的軟件,以及我們在MySQL數據庫中爲他們所做的工作,但是爲了讓UI以我想要的方式工作我需要讓數組中的每個數據庫或表都可以稍後引用。例如我如何列出Python數組中的MySQL數據庫

MysqlTables = [customers,clients,jobs] 
MysqlTables[0] = [joshua,alex,james] 
MysqlTables[0][0] = ["computer issue"] 

這樣我可以引用並顯示在前端UI 使用樹部件PyQt4中顯示視覺導航的任何其他溶液,將不勝感激

我仍然相當新的所有信息使用與Python的MySQL和時遇到一些麻煩了解的一切,我已經發現了這一點,但我不明白它

How do I list all tables in all databases in SQL Server in a single result set?

從我可以描繪

從這我可能想要做類似的事情,但我不知道如何實現它,它不會包含客戶端的工作信息。

+0

您已經描述了您需要的極端約束解決方案,而沒有真正識別您想要完成的任務。如果您在mysql中有數據,則可以使用sql語句提取所需的內容。你不需要所有的數據,或者如果你這樣做,爲什麼把它放在數據庫中? –

+0

也意味着可以通過網絡客戶端訪問,這就是爲什麼我決定將信息存儲在數據庫中,一旦工作完成,我還需要訪問它來存儲和打印發票。我正在嘗試創建一個客戶端,允許您使用流暢的UI添加,查看和編輯數據庫中的數據,目前我必須完成的方法涉及到PyQt4中基於樹的可視元素,以允許用戶通過多個文件的信息,並在幾個簡單的步驟中提供它們。 –

+0

顯示給你帶來問題的代碼 –

回答

0

我爲一個項目編寫了非常相似的東西,我基本上在GUI中有一個數據庫接口,並且允許用戶編輯數據庫並將其添加到數據庫中,而無需進入MySql Workbench。

您將需要兩個函數與數據庫進行交互,一個用於檢索條目,另一個用於執行更改。

這是一些代碼,它將使用SqlAlchemy從數據庫中檢索信息。

def get_info(): 
    sql = text('SELECT id, ' 
        'serial_number, ' 
        'weight_name, ' 
        'units, ' 
        'nominal, ' 
        'customer_name, ' 
        'density, ' 
        'density_uncert , ' 
        'volumetric_exp, ' 
        'comment ' 
        'FROM weights_external ' 
        'ORDER BY id ') 

    return self.engine.execute(sql).fetchall() 

這從所謂的 「weights_external」 表中選擇ID,序列號,單位等,通過ID訂購吧。 self.engine.execute(sql).fetchall()返回一個生成器(我想,它可能是一個列表,但我不記得我的頭頂對不起!),你可以循環並獲得所有結果。在這個例子中,我從這張表中獲得了10列。如果該表有100行,那麼該函數將返回一個長度爲100的列表,該列表中的每個元素都將是一個長度爲10的列表,每個元素包含一列中的信息。

我將這個長度爲100的列表存儲在一個變量中,我使用這個變量來爲GUI填充一個QTableWidget。

我有一個單獨的按鈕來調出一個允許用戶添加一行的子窗口。這個代碼與get_info()非常相似,不同之處在於您現在正在更新或插入表中(您可以在SqlAlchemy或MySql文檔中查看)。基本上,你必須與此類似:

def push_data(self, data): 
    table = self.weights_external.insert() 
    self.engine.execute(table.values(id=data['id'], 
            serial_number=data['serial_num'], 
            ... 
            comment=data['comment'])) 

我在中間的時間和空間的緣故冷落了的東西,但這些代碼一些片段應允許您從數據庫中檢索數據,把將其轉換爲QTableWidget或其他QObject,並允許用戶通過按下按鈕來更改該數據。如果您有任何問題,請發表評論!

相關問題