我爲一個項目編寫了非常相似的東西,我基本上在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,並允許用戶通過按下按鈕來更改該數據。如果您有任何問題,請發表評論!
您已經描述了您需要的極端約束解決方案,而沒有真正識別您想要完成的任務。如果您在mysql中有數據,則可以使用sql語句提取所需的內容。你不需要所有的數據,或者如果你這樣做,爲什麼把它放在數據庫中? –
也意味着可以通過網絡客戶端訪問,這就是爲什麼我決定將信息存儲在數據庫中,一旦工作完成,我還需要訪問它來存儲和打印發票。我正在嘗試創建一個客戶端,允許您使用流暢的UI添加,查看和編輯數據庫中的數據,目前我必須完成的方法涉及到PyQt4中基於樹的可視元素,以允許用戶通過多個文件的信息,並在幾個簡單的步驟中提供它們。 –
顯示給你帶來問題的代碼 –