2016-03-08 51 views
-2

我正在嘗試將值添加到SQL數據庫表。但我想使用列名和值作爲變量。 Python控制檯顯示此代碼沒有錯誤。但是在數據庫表中沒有改變。意味着沒有插入發生。我正在使用Python,PyQt4和SQLite3。有沒有辦法做到這一點。在Qtsql中添加列名和值作爲變量PyQT4

nameentry = "John Doe" 
columnName = "Name" 

self.query.exec('''INSERT INTO MainTable {cn} VALUES {dv};'''.format(cn=tuple(columnName),dv=tuple(nameentry))) 

我到處搜索。但我沒有得到答案。 這是我的表 Simple Table

+0

好的。你目前收到的錯誤是什麼?請提供詳情。 – idjaw

+0

Python控制檯沒有錯誤。但是在數據庫表中顯示沒有添加這個條目。意味着沒有發生插入 – ameen

+0

請將這些細節添加到您的問題中。 – idjaw

回答

0

您的查詢字符串是完整的垃圾:

>>> nameentry = "John Doe" 
>>> columnName = "Name" 
>>> '''INSERT INTO MainTable {cn} VALUES {dv};'''.format(cn=tuple(columnName),dv=tuple(nameentry)) 
"INSERT INTO MainTable ('N', 'a', 'm', 'e') VALUES ('J', 'o', 'h', 'n', ' ', 'D', 'o', 'e');" 

也許你意味着更多的東西一樣:

>>> '''INSERT INTO MainTable {cn} VALUES {dv};'''.format(cn=columnName,dv=(nameentry,)) 
"INSERT INTO MainTable Name VALUES ('John Doe',);" 

但我不知道,要麼工作,因爲值中有一個尾隨的逗號。所以你可能不得不試試這個:

>>> '''INSERT INTO MainTable {cn} VALUES ({dv!r}) ;'''.format(cn=columnName,dv=nameentry) 
"INSERT INTO MainTable Name VALUES ('John Doe') ;" 
+0

@ekhumoro那也行不通。我不知道爲什麼。 http://i.stack.imgur.com/1EjFj.jpg這是我的表 – ameen

+0

@ameen。您需要提供真實的**代碼**,而不是圖片。 – ekhumoro

+0

我使用代碼動態添加列...''self.query.exec _(「ALTER TABLE MainTable ADD {cn} {dt}」.format(cn = column_name,dt = data_type))''它的工作原理..但當我添加這個直接沒有變量的代碼@ekhumoro'self.query.exec _(「INSERT INTO MainTable Name VALUES('JOHN JOE');」)'它不起作用。 – ameen