在 Qtsql PyQT4 中添加列名和值作为变量

Posted

技术标签:

【中文标题】在 Qtsql PyQT4 中添加列名和值作为变量【英文标题】:Adding Column name and value as variables in Qtsql PyQT4 【发布时间】:2016-03-08 01:50:07 【问题描述】:

我正在尝试向 SQL 数据库表中添加值。但我想使用列名和值作为变量。 Python 控制台显示此代码没有错误。但是数据库表没有变化。意味着没有插入发生。我正在使用 Python、PyQt4 和 SQLite3。有没有办法做到这一点。

nameentry = "John Doe"
columnName = "Name"

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

我到处找。但我没有得到答案。 这是我的桌子 Simple Table

【问题讨论】:

好的。您目前遇到的错误是什么?请提供详细信息。 Python 控制台中没有错误。但在数据库表中显示没有添加此条目。表示没有插入发生 请将该详细信息添加到您的问题中。 @idjaw 我正在使用 Python PyQt4 和 SQLite3。我也会添加.. 【参考方案1】:

您的查询字符串完全是垃圾:

>>> 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') ;"

【讨论】:

@ekhumoro 这也不起作用..我不知道为什么。 i.stack.imgur.com/1EjFj.jpg这是我的桌子 @ameen。您需要提供真实的代码,而不是图片。 我正在使用代码动态添加列...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');") 它不起作用.. 这是一个有点大的程序。如何共享所有这些代码? 是的,我必须插入身份证号码。当我这样写时,它起作用了..self.query.exec_("INSERT INTO MainTable (ID, Name)VALUES (5,'JOHN JOE');")

以上是关于在 Qtsql PyQT4 中添加列名和值作为变量的主要内容,如果未能解决你的问题,请参考以下文章

Spring Data JPA - 将列名和值作为参数传递

对列名排序后转置和添加前缀的宏

在python mysql查询中动态地传递列名和值。

Javascript:在嵌套字典中添加键/值对;键和值是变量

变量作为 Oracle PL/SQL 中 where 子句中的列名

Dexie -> 列名作为变量