如何使用pyodbc(python)执行sql server transaction?
我知道有一个方法"执行"一个字符串和一个参数列表.
但是现在我想在一个事务中执行2个或更多命令.
有没有办法做到这一点?
BEGIN TRANSACTION [Tran1]
BEGIN TRY
INSERT INTO [Test].[dbo].[T1]
([Title], [AVG])
VALUES ('Tidd130', 130), ('Tidd230', 230)
UPDATE [Test].[dbo].[T1]
SET [Title] = N'az2' ,[AVG] = 1
WHERE [dbo].[T1].[Title] = N'az'
COMMIT TRANSACTION [Tran1]
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION [Tran1]
END CATCH
GO
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用这里的示例代码:
http://www.pymssql.org/en/latest/pymssql_examples.html
我使用pip. 我也在 site-packages 文件夹中看到了
C:\Python27\Lib\site-packages\pymmsql.pyd
Run Code Online (Sandbox Code Playgroud)
但是,当我执行代码时,出现以下错误:
Traceback (most recent call last):
File "C:\Android\android_workspace\pythonProject\test.py", line 2, in <module>
import pymssql
ImportError: DLL load failed: The specified module could not be found.
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我尝试执行此事务:
GO
BEGIN TRAN;
MERGE A AS t
USING B AS tmp
ON (t.domain = tmp.domain and t.link=tmp.link)
WHEN NOT MATCHED BY A
THEN INSERT(ipVal, domain, dateStart, dateUpdate, dateFinish, link) VALUES(tmp.ipVal, tmp.domain, tmp.dateStart, tmp.dateUpdate, tmp.dateFinish, tmp.link)
WHEN MATCHED
THEN UPDATE SET t.dateupdate = tmp.dateupdate
WHEN NOT MATCHED BY B
THEN UPDATE SET t.datefinish="a"
ROLLBACK TRAN;
GO
Run Code Online (Sandbox Code Playgroud)
我从这里获取了这段代码,但是当我尝试执行此操作时出现错误:
Incorrect syntax near 'A'
Run Code Online (Sandbox Code Playgroud)
可能是什么问题?
I tried to execute this code:
import whois
w = whois.whois('webscraping.com')
print w
Run Code Online (Sandbox Code Playgroud)
And I got the error above. Why?
python ×2
sql-server ×2
merge ×1
pymssql ×1
pyodbc ×1
python-2.7 ×1
python-2.x ×1
python-3.x ×1
pywhois ×1
sql ×1
transactions ×1
whois ×1