- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何通过 PyQt4.QtSql
模块从 SQL Server 获取最后插入行的 ID?现在我使用的是 SQL Server 2012 Express,但程序也必须在 SQL Server 2000 上运行。
这是我的代码(Python + PyQt)和结果:
from PyQt4.QtGui import QApplication
from PyQt4 import QtSql
app = QApplication([])
db = QtSql.QSqlDatabase.addDatabase("QODBC")
db.setDatabaseName('Driver={SQL Server Native Client 11.0};Server=(localdb)\\v11.0;')
db.open()
query = QtSql.QSqlQuery()
query.prepare("""CREATE TABLE Test(
ID INT PRIMARY KEY IDENTITY(1, 1),
Row nvarchar(255)
)
""")
query.exec_()
query = QtSql.QSqlQuery()
query.prepare('INSERT Test OUTPUT Inserted.ID VALUES(?)')
query.bindValue(0, 'Test')
query.exec_()
while query.next():
last_inserted_id = query.value(0)
print('OUTPUT: ', last_inserted_id)
print('QSqlQuery.lastInsertId: ', query.lastInsertId())
query = QtSql.QSqlQuery('SELECT SCOPE_IDENTITY()')
while query.next():
last_inserted_id_ = query.value(0)
print('SCOPE_IDENTITY: ', last_inserted_id_)
db.close()
结果:
OUTPUT: 1
QSqlQuery.lastInsertId: None
SCOPE_IDENTITY: <PyQt4.QtCore.QPyNullVariant object at 0x00000000032D88D0>
不幸的是,OUTPUT
子句受 SQL Server 2005 或更高版本支持。
Python 3.2.3 (x64)、PyQt 4.9.4、SQL Server 2012 Express
有什么想法吗?
编辑:
到目前为止,我使用SELECT @@IDENTITY
。
最佳答案
将我的评论移至答案,以便彻底关闭此问题:
我不懂Python,但我认为SCOPE_IDENTITY()只能在批处理中工作。因此,您可能需要将 ;SELECT SCOPE_IDENTITY() 添加到带有 INSERT 的查询中。希望这会有所帮助。
因此您的插入内容可能如下所示:
query = QtSql.QSqlQuery()
query.prepare('INSERT Test VALUES(?); SELECT SCOPE_IDENTITY()')
query.bindValue(0, 'Test')
query.exec_()
while query.next():
last_inserted_id = query.value(0)
关于python - 如何通过 QSqlQuery.lastInsertId() 从 SQL Server 获取最后插入行的 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11601281/
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我已经挣扎了几个小时了。我正在创建一个新的用户表单,我需要将数据插入两个不同但连接的表中,但是我在这里发布的代码根本没有给出任何错误,事实上它正在插入第一个查询(# query1) 到数据库,但不是
这个查询有多错?我可以像这样插入多个查询吗?我可以像这样使用 lastInsertId 吗? $pdo = Database::connect(); $dflt = 'DEFAULT';
$query = $database->prepare("UPDATE table SET value = value WHERE value = '$value'"); $query_1->exec
作为类(class)项目,我正在使用 PHP/MySQL 开发一个小型网络应用程序。 当用户创建一个账户(账户类型必须是导师或学生)时,我按照以下逻辑将他插入到数据库中: 注意:我通过将 USER 设
为什么? try{ $st = $this->prepare("INSERT INTO thetable (a,b) VALUES (?,?)"); $st->execute(arra
当我得到 lastInsertId() 时,我的 pdo 连接发生了一些奇怪的事情:在 90% 的情况下它工作正常,但在 10% 的情况下它返回 0(我不知道它是真的 0 还是 FALSE) .但在
是否可以从方法中获取 lastInsertId(),如果可能的话,是否可以从特定表中获取值? 我尝试使用的方法在我的db.class.php public function getLastID(){
我对 lastInsertId() 函数的编写方式感到困惑。例如,我有以下使用 lastInsertId() 函数的查询。 $myinsert = $pdo->prepare("INSERT INTO
有没有办法(在单个查询中)插入多行,并且让某些行知道先前插入的行的 id? insert into my_table(contents, css) values ('some text', 'colo
这个问题对我来说又很重要。有没有人有解决办法? $conn = new PDO('mysql:dbname=test;host=127.0.0.1', 'root', '********'); $co
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
这很奇怪。我正在运行一个仅包含单个 INSERT 的查询,前面有一个 SET 语句。查询看起来像这样: SET @discount:=(SELECT discount * :applyDiscount
在网上找到了一些关于AUTO_INCREMENT的相关资料,想请教各位。 这是我发现的一些与 AUTO_INCREMENT 插入相关的代码。我不确定该字段是否为 auto_increment,如果我应
我是一名初级程序员,正在对数据库应用程序进行非常简单的插入。 这是我的代码: $hostname = 'localhost'; $username = '***********'; $password
这个问题在这里已经有了答案: MySQL and PDO: Could PDO::lastInsertId theoretically fail? (2 个答案) 关闭 9 年前。 我有一个通过 A
我目前正在构建一个 symfony/doctrine 应用程序,其中一个模型具有以下结构: Session: columns: session_id: type: intege
我有以下 PHP 脚本,它运行良好,并使用 PDO 事务正确地将所有数据插入 MySQL,但仅在第一次运行时。初次运行后,我尝试再次插入相同的数据。第一个 lastInsertId 然后开始返回 0,
如果我有这段代码: prepare("INSERT INTO `table` (row) VALUES ('1')"); $q->execute(); $lastid = $sql->
我想知道 lastInsertId() 究竟是如何工作的。 Atm,我像这样使用它来获取插入行的 id,这样我就可以在代码的其他部分使用这个 id。例如: $stmt = $db->prepare('
我是一名优秀的程序员,十分优秀!