{"id":876,"date":"2023-01-04T06:30:53","date_gmt":"2023-01-03T21:30:53","guid":{"rendered":"https:\/\/www.kumoman.net\/en-site\/?p=876"},"modified":"2023-01-04T22:36:09","modified_gmt":"2023-01-04T13:36:09","slug":"python-vscode-sqlserver-transactionalquery-no94-en","status":"publish","type":"post","link":"https:\/\/www.kumoman.net\/en-site\/2023\/01\/04\/python-vscode-sqlserver-transactionalquery-no94-en\/","title":{"rendered":"Python -Run a transactional query SQL Server on Ubuntu\u00a0No.94"},"content":{"rendered":"\n<p>How to execute commit or rollback for a transactional query using python and pyodbc in SQL Server on Ubuntu is shown in this blog.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:22px\"><strong>\u25bc1. Run a transactional query in SQL Server on Ubuntu<\/strong><\/h2>\n\n\n\n<p>Regarding Java, how to execute a transactional query was shown in this past blog as below. this blog is written to implement it by Python. the autocommit of pyodbc is true. it is meant to commit a transaction automatically by default.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.kumoman.net\/en-site\/2023\/01\/02\/msjdbcdriverforsqlsrv-transaction-no9-en\/\" target=\"_blank\" rel=\"noopener\" title=\"\">Java \u2013 Run a transactional query in SQL Server on Ubuntu No9<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/learn.microsoft.com\/en-us\/sql\/odbc\/reference\/syntax\/sqlsetconnectattr-function?view=sql-server-ver16#comments\" target=\"_blank\" rel=\"noopener\" title=\"\">SQL_ATTR_AUTOCOMMIT (ODBC 1.0)<\/a><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:22px;font-style:normal;font-weight:400\"><strong>\u25bc2. Creating Python code to insert data with False of &#8220;autocommit&#8221;<\/strong><\/h2>\n\n\n\n<p>Table &#8220;sampletb&#8221; has columns &#8220;c1&#8221; and &#8220;c2&#8221;. the value (10,10)&nbsp;is inserted using transaction and then select is executed to get data. after that, this insert query end without commit. autocommit is falise in pyodbc.connect.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"font-size:17px;font-style:normal;font-weight:100\"><strong>2-1<\/strong>. Creating Python code<\/h3>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"wp-block-code\"><code><em>import pyodbc\nimport time\nimport datetime\n\nserver = 'localhost'\ndatabase = 'testdb'\nusername = 'sa'\npassword = 'yourpassword'\ndriver= '{ODBC Driver 17 for SQL Server}'\nsuccess = False\nretryc = 0\nmax_retries = 3\n\nwhile not success and retryc &lt; max_retries:\n    try:\n        cnxn = pyodbc.connect('DRIVER='+driver+';SERVER='+server+',1433;DATABASE='+database+';UID='+username+';PWD='+ password+';',<strong>autocommit=False<\/strong>,Timeout=1,Trusted_Connection='no',Encrypt='no')\n        cursor0 = cnxn.cursor()\n        cursor0.execute(\"insert into sampledb.dbo.sampletb values (10, 10)\")\n<strong>        #cursor0.commit()\n        #cursor0.rollback()<\/strong>\n\n        cursor = cnxn.cursor()\n        cursor.execute(\"SELECT * FROM sampledb.dbo.sampletb with(Serializable)\")\n        row = cursor.fetchone()\n        \n        while row:\n            print (str(row&#91;0]) + \" \" + str(row&#91;1]))\n            row = cursor.fetchone()\n            \n        success = True\n    except pyodbc.Error as ex:\n        retryc += 1\n        print(\"Current Timestamps:\" + str(datetime.datetime.now()) + \"retry count: \" + str(retryc))\n        print(\"==========================\")\n        print(\"Error: \" + str(ex))\n        print(\"==========================\")\n        time.sleep(3)\n\n    finally:\n        cursor.close()<\/em><\/code><\/pre>\n<\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"font-size:17px;font-style:normal;font-weight:100\"><strong>2-2<\/strong>. Results of this code<\/h3>\n\n\n\n<p>The result of select query is below.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"wp-block-preformatted\">1 1\n2 2\n3 3\n10 10<\/pre>\n<\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"font-size:17px;font-style:normal;font-weight:100\"><strong>2-3<\/strong>. Confirming data in table after connecting to SQL Server by sqlcmd utility<\/h3>\n\n\n\n<p>We cannot confirm value (10,10) in the table since we did not implement commit.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"wp-block-code\"><code>&gt; <em>select * from sampledb.dbo.sampletb;<\/em>\n&gt; <em>go<\/em>\nc1          c2         \n----------- -----------\n          1           1\n          2           2\n          3           3\n\n(3 rows affected)<\/code><\/pre>\n<\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:22px;font-style:normal;font-weight:400\"><strong>\u25bc3. Reference<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\" type=\"1\">\n<li><a href=\"https:\/\/learn.microsoft.com\/en-us\/sql\/linux\/quickstart-install-connect-ubuntu?view=sql-server-ver16\" target=\"_blank\" rel=\"noopener\" title=\"\">Quickstart: Install SQL Server and create a database on Ubuntu<\/a><\/li>\n\n\n\n<li>pyodbc <a href=\"https:\/\/pypi.org\/project\/pyodbc\/\" target=\"_blank\" rel=\"noopener\" title=\"\">https:\/\/pypi.org\/project\/pyodbc\/<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.kumoman.net\/en-site\/2023\/01\/02\/msjdbcdriverforsqlsrv-transaction-no9-en\/\">Java \u2013 Run a transactional query in SQL Server on Ubuntu No9<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/learn.microsoft.com\/en-us\/sql\/odbc\/reference\/syntax\/sqlsetconnectattr-function?view=sql-server-ver16#comments\" target=\"_blank\" rel=\"noopener\" title=\"\">SQL_ATTR_AUTOCOMMIT (ODBC 1.0)<\/a><\/li>\n<\/ol>\n\n\n\n<p>That&#8217;s all. Have a nice day ahead !!!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>How to execute commit or rollback for a transactional query using python and pyodbc in SQL Server on Ubuntu is shown in this blog. \u25bc1. Run a transactional query in SQL Server on Ubuntu Regarding Java, how to execute a transactional query was shown in this past blog as below. this blog is written to implement it by Python. the autocommit of pyodbc is true. it is meant to commit a transaction automatically by default. \u25bc2. Creating Python code to insert data with False of &#8220;autocommit&#8221; Table &#8220;sampletb&#8221; has columns &#8220;c1&#8221; and &#8220;c2&#8221;. the value (10,10)&nbsp;is inserted using transaction and then select is executed to get data. after that, this &hellip; <a href=\"https:\/\/www.kumoman.net\/en-site\/2023\/01\/04\/python-vscode-sqlserver-transactionalquery-no94-en\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Python -Run a transactional query SQL Server on Ubuntu\u00a0No.94&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[27,23,26],"tags":[47,16,18,31],"class_list":["post-876","post","type-post","status-publish","format-standard","hentry","category-python","category-sqlserver","category-visualstudiocodeseries","tag-python","tag-sql-server","tag-ubuntu","tag-visual-studio-code"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.kumoman.net\/en-site\/wp-json\/wp\/v2\/posts\/876","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kumoman.net\/en-site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kumoman.net\/en-site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kumoman.net\/en-site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kumoman.net\/en-site\/wp-json\/wp\/v2\/comments?post=876"}],"version-history":[{"count":15,"href":"https:\/\/www.kumoman.net\/en-site\/wp-json\/wp\/v2\/posts\/876\/revisions"}],"predecessor-version":[{"id":949,"href":"https:\/\/www.kumoman.net\/en-site\/wp-json\/wp\/v2\/posts\/876\/revisions\/949"}],"wp:attachment":[{"href":"https:\/\/www.kumoman.net\/en-site\/wp-json\/wp\/v2\/media?parent=876"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kumoman.net\/en-site\/wp-json\/wp\/v2\/categories?post=876"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kumoman.net\/en-site\/wp-json\/wp\/v2\/tags?post=876"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}