python連接sql數據庫_python連接sql server數據庫實現增刪改查

簡述

python連接微軟的sql server數據庫用的第三方模塊叫做pymssql(document:http://www.pymssql.org/en/stable/index.html)。在官方文檔可以看到,pymssql是基于_mssql模塊做的封裝,是為了遵守python的DBAPI規范接口. 兩者之間的關系如下圖:

1085793-20170526155930247-926509214.jpg

1.使用pymssql連接sql server數據庫并實現數據庫基本操作(官方api http://www.pymssql.org/en/stable/ref/pymssql.html )

1)基本語法

importpymssql

server= "187.32.43.13" # 連接服務器地址user= "root"         # 連接帳號password= "1234"      # 連接密碼conn= pymssql.connect(server, user, password, "連接默認數據庫名稱") #獲取連接

cursor=conn.cursor() # 獲取光標

# 創建表

cursor.execute("""IF OBJECT_ID('persons', 'U') IS NOT NULL

DROP TABLE persons

CREATE TABLE persons (

id INT NOT NULL,

name VARCHAR(100),

salesrep VARCHAR(100),

PRIMARY KEY(id)

)""")

# 插入多行數據

cursor.executemany("INSERT INTO persons VALUES (%d, %s, %s)",

[(1, 'John Smith', 'John Doe'),

(2, 'Jane Doe', 'Joe Dog'),

(3, 'Mike T.', 'Sarah H.')])#你必須調用 commit() 來保持你數據的提交如果你沒有將自動提交設置為true

conn.commit()

# 查詢數據

cursor.execute('SELECT * FROM persons WHERE salesrep=%s', 'John Doe')

# 遍歷數據(存放到元組中) 方式1

row=cursor.fetchone()whilerow:print("ID=%d, Name=%s" % (row[0], row[1]))

row=cursor.fetchone()

# 遍歷數據(存放到元組中) 方式2

for row in cursor:

print('row = %r' % (row,))

# 遍歷數據(存放到字典中)

# cursor = conn.cursor(as_dict=True)

#

# cursor.execute('SELECT * FROM persons WHERE salesrep=%s', 'John Doe')

# for row in cursor:

# print("ID=%d, Name=%s" % (row['id'], row['name']))

#

# conn.close()

# 關閉連接

conn.close()

# 注:在任何時候,在一個連接下,一次正在執行的數據庫操作只會出現一個cursor對象

2)同時,如果你可以使用另一種語法:with 來避免手動關閉cursors和connection連接

importpymssql

server= "187.32.43.13" #連接服務器地址

user = "root"         #連接帳號

password = "1234"      #連接密碼

with pymssql.connect(server, user, password,"你的連接默認數據庫名稱") as conn:

with conn.cursor(as_dict=True) as cursor: #數據存放到字典中

cursor.execute('SELECT * FROM persons WHERE salesrep=%s', 'John Doe')for row incursor:print("ID=%d, Name=%s" % (row['id'], row['name']))

3)調用存儲過程:

with pymssql.connect(server, user, password, "tempdb") as conn:

with conn.cursor(as_dict=True) as cursor:

cursor.execute("""CREATE PROCEDURE FindPerson

@name VARCHAR(100)

AS BEGIN

SELECT * FROM persons WHERE name = @name

END""")

cursor.callproc('FindPerson', ('Jane Doe',))for row incursor:print("ID=%d, Name=%s" % (row['id'], row['name']))

2.使用_mssql連接sql server數據庫并實現操作(官方api http://www.pymssql.org/en/stable/ref/_mssql.html)

1)基本語法:

import_mssql#創建連接

conn = _mssql.connect(server='SQL01', user='user', password='password', \

database='mydatabase')

print(conn.timeout)

print(conn.login_timeout)#創建table

conn.execute_non_query('CREATE TABLE persons(id INT, name VARCHAR(100))')#insert數據

conn.execute_non_query("INSERT INTO persons VALUES(1, 'John Doe')")

conn.execute_non_query("INSERT INTO persons VALUES(2, 'Jane Doe')")#查詢操作

conn.execute_query('SELECT * FROM persons WHERE salesrep=%s', 'John Doe')for row inconn:print "ID=%d, Name=%s" % (row['id'], row['name'])#查詢數量count()

numemployees = conn.execute_scalar("SELECT COUNT(*) FROM employees")#查詢一條數據

employeedata = conn.execute_row("SELECT * FROM employees WHERE id=%d", 13)#帶參數查詢的幾個例子:

conn.execute_query('SELECT * FROM empl WHERE id=%d', 13)

conn.execute_query('SELECT * FROM empl WHERE name=%s', 'John Doe')

conn.execute_query('SELECT * FROM empl WHERE id IN (%s)', ((5, 6),))

conn.execute_query('SELECT * FROM empl WHERE name LIKE %s', 'J%')

conn.execute_query('SELECT * FROM empl WHERE name=%(name)s AND city=%(city)s', \

{'name': 'John Doe', 'city': 'Nowhere'} )

conn.execute_query('SELECT * FROM cust WHERE salesrep=%s AND id IN (%s)', \

('John Doe', (1, 2, 3)))

conn.execute_query('SELECT * FROM empl WHERE id IN (%s)', (tuple(xrange(4)),))

conn.execute_query('SELECT * FROM empl WHERE id IN (%s)', \

(tuple([3, 5, 7, 11]),))#關閉連接

conn.close()

pymssql托管在Github上:https://github.com/pymssql

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455629.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455629.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455629.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

es5.0 安裝head插件

es5.0的安裝和之前的版本有些區別,我的電腦用plugin install 沒成功, 查了一下資料,說是可以用grunt進行安裝,啟動; 1,先安裝grunt: grunt是一個很方便的構建工具,可以進行打包壓縮、測試、執行等等的工作,5.0里的head插件就是通過grunt啟動的。 npm ins…

Django后臺項目之用戶管理功能開發流程

項目功能開發流程 1 先寫列表頁&#xff08;加載出來數據就行&#xff09; ob User_vip.objects.filter(is_del004001).order_by(-cts)2 寫添加功能 2.1 創建addOrDoadd視圖方法 2.2 添加訪問addOrDoadd的路由 2.3 在index.html頁面吧添加的按鈕的鏈接不全 <a style&…

套接字 資料查閱

(3)套接字(socket) 一個完整的網絡應用程序包括客戶端和服務器兩個部分。網間通信進程需要由兩個進程組成&#xff0c;并且只能用同一種協議。也就是說&#xff0c;不能在通信的一端使用TCP協議&#xff0c;而另一端則用UDP協議。一個完整的網絡通信需要一個五元組來標識…

linux mysql安裝_Linux下安裝mysql服務(超詳細)

Mysql數據庫的安裝對于開發者來說&#xff0c;是我們必然會面對的問題&#xff0c;它的安裝過程其實并不復雜&#xff0c;并且網絡上的安裝教程也非常多&#xff0c;但是對于新手來說&#xff0c;各種不同形式的安裝教程&#xff0c;又給新手們帶來了要選擇哪種方式進行安裝的難…

dash 和 bash 切換

#先看看是用的哪個 shellls -al /bin/sh #如果是dash&#xff0c;切換到bashsudo ln -fs /bin/bash /bin/sh轉載于:https://www.cnblogs.com/abolide/p/6874265.html

Django中使用ajax技術概述

ajax 1.什么是ajax ajax就是在不刷新整個頁面的情況下&#xff0c;去更新局部頁面的內容&#xff08;無刷新技術&#xff09; 2.ajax有什么優點 最大的一點是頁面無刷新&#xff0c;在頁面內與服務器通信&#xff0c;給用戶的體驗非常好。 使用異步方式與服務器通信&#x…

IE、FF腳本兼容性問題

1.window.event IE有這個對象&#xff1b;FF沒有&#xff0c;FF通過參數傳遞 2.獲取事件源 IE&#xff1a;srcElement FF&#xff1a;target 3.添加與去除事件 IE&#xff1a;element.attachEvent("onclick", function(){}) element.detachEvent("onclick"…

ARM MOV和 LDR指令關系

ARM是RISC結構&#xff0c;數據從內存到CPU之間的移動只能通過L/S指令來完成&#xff0c;也就是ldr/str指令。比如想把數據從內存中某處讀取到寄存器中&#xff0c;只能使用ldr比如&#xff1a;ldr r0, 0x12345678就是把0x12345678這個地址中的值存放到r0中。而mov不能干這個活…

day2 操作系統

一.為何要有操作系統 程序員無法把所有的硬件操作細節都了解到&#xff0c;管理這些硬件并且加以優化使用是非常繁瑣的工作&#xff0c;這個繁瑣的工作就是操作系統來干的&#xff0c;有了他&#xff0c;程序員就從這些繁瑣的工作中解脫了出來&#xff0c;只需要考慮自己的應用…

Django之model模型

模型 1.如何安裝pymysql 1.file->settings->Project Interpreter 2.點擊右邊的"" 3.搜索pymysql 4.點擊最下面的"install package" 5.安裝成功會提示"Package "pymysql" install successfully"2.如何在django中配置mysql 1.在…

python安裝不了jupyter_python學習筆記——Windowns下Python3之安裝jupyter

Windowns下Python3之安裝jupyter Jupyter notebook&#xff1a; 一個交互式筆記本&#xff0c;支持運行40多種編程語言。 利用它來寫Python&#xff0c;代碼和運行結果都可以保存下載&#xff0c;十分方便。本文主要以自身的安裝過程為例&#xff0c;結合遇到的問題&#xff0c…

Java文件讀寫操作

http://blog.csdn.net/jiangxinyu/article/details/7885518/ 比較齊全&#xff0c;有多種文件讀寫操作轉載于:https://www.cnblogs.com/maowuyu-xb/p/7238170.html

視頻編碼與封裝方式詳解

1. 編碼方式和封裝格式... 1 2. 視頻編碼標準兩大系統... 2 MPEG-1. 2 MPEG-2. 3 MPEG-3. 3 MPEG-4. 3 ITU-T. 4 WMV. 4 3. 常用視頻編碼方式有Xvid( 4 4. 常見存儲封裝格式... 6 5. 幾種常見的轉換格式設置... 7 6. 無損視頻編碼... 9 1. 編碼方式和封裝格式常見…

Binder

問&#xff1a;為什么Android要采用Binder作為IPC機制 答案來自百度知道&#xff1a; &#xff08;1&#xff09;從性能的角度數據拷貝次數&#xff1a;Binder數據拷貝只需要一次&#xff0c;而管道、消息隊列、Socket都需要2次&#xff0c;但共享內存方式一次內存拷貝都不需要…

matlab 三維核密度圖_Matlab精彩畫圖示例:三維網狀圖和三維曲面圖

接上篇&#xff1a;Matlab精彩畫圖示例&#xff1a;繪制圖上圖這篇介紹兩個繪制三維圖的命令&#xff1a;mesh - 繪制三維網狀圖surf - 繪制三維曲面圖matlab代碼如下&#xff1a;繪制三維圖的matlab代碼示例程序運行結果如下&#xff1a;mesh(X,Y,Z) draws a wireframe mesh w…

Django之templates模板

模板的使用 1.如何使用模板 在manage.py的同級文件夾中創建templates在setting.py的文件中把第58行DIRS: [ ],改成DIRS: [os.path.join(BASE_DIR,templates)], 知識點: os.path.join(BASE_DIR,templates) 拼接兩個字符串 BASE_DIR找到項目根目錄127.0.0.1:8000/myadmin/templ…

STL容器刪除元素的陷阱

今天看Scott Meyers大師的stl的用法&#xff0c;看到了我前段時間犯的一個錯誤&#xff0c;發現我寫的代碼和他提到錯誤代碼幾乎一模一樣&#xff0c;有關stl容器刪除元素的問題&#xff0c;錯誤的代碼如下&#xff1a;std::vector<struct> mFriendList;...std::vector&l…

JDBC1

1.jdbc的概述 是sun公司統一提供的一套接口規范,各個數據庫生產商提供實現 注冊驅動,獲得連接,獲得執行的SQL語句對象,釋放資源 package com.learn.jdbc;import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException;import org.junit.Test;publ…

無符號哥倫布指數編碼

在H264編解碼中&#xff0c;哥倫布指數編碼是經常用到的&#xff0c;下面是無符號哥倫布指數編碼的C代碼&#xff1a; static inline int bs_read_ue( bs_t *s ){ int i 0; while( bs_read1( s ) 0 && s->p < s->p_end && i < 32 ) { …

django后臺多頁面分頁邏輯python代碼

#!/usr/bin/env python # -*- coding:utf-8 -*- # Created by 秋葉夏風# 本模塊的功能:<>def get_page_list(max_page,curr_page,leng):用于生成頁數列表:param max_page:最大頁數:param curr_page:當前頁數:param leng:分頁步長:return:list# max_page 20# curr_page …