python連線SQL Server:Pymssql模組
阿新 • • 發佈:2019-01-05
資料庫版本:SQL Server 2012。
按照python版本來選擇下載pymssql模組,這樣才能連線上sql server。
我把檔案下載後放到E盤,安裝pymssql模組:
C:\Users\Administrator>pip install e:\pymssql-2.1.3-cp35-cp35m-win_amd64.whl Processing e:\pymssql-2.1.3-cp35-cp35m-win_amd64.whl Installing collected packages: pymssql Successfully installed pymssql-2.1.3
一、建立資料庫Test、表tb、插入資料
特別需要注意的是:為了避免亂碼問題,這裡Name列是nvarchar型別的(適合中文),不會出現亂碼現象,一開始用的varchar型別出現了亂碼。
create database Test; go use test; go if object_id('tb') is not null drop table tb; go CREATE TABLE TB(ID INT,NAME NVARCHAR(20),SCORE NUMERIC(10,2)); INSERT INTO TB(ID,NAME,SCORE) VALUES(1,'語文',100), (2,'數學',80), (3,'英語',900), (4,'政治',65), (5,'物理',65), (6,'化學',85), (7,'生物',55), (8,'地理',100)
二、連線資料庫、查詢、增加、更新資料
connect的引數:
user:使用者名稱
password:密碼
trusted:布林值,指定是否使用windows身份認證登陸
host :主機名
database:資料庫
timeout:查詢超時
login_timeout:登陸超時
charset:資料庫的字符集
as_dict:布林值,指定返回值是字典還是元組
max_conn:最大連線數
基本的步驟就是:# -*- coding:gbk -*- import pymssql #資料庫連線 conn=pymssql.connect(host='wc-pc',user='sa',password='ggg',database='Test') #開啟遊標 cur=conn.cursor(); if not cur: raise Exception('資料庫連線失敗!') sSQL = 'SELECT * FROM TB' #執行sql,獲取所有資料 cur.execute(sSQL) result=cur.fetchall() #1.result是list,而其中的每個元素是 tuple print(type(result),type(result[0])) #2. print('\n\n總行數:'+ str(cur.rowcount)) #3.通過enumerate返回行號 for i,(id,name,v) in enumerate(result): print('第 '+str(i+1)+' 行記錄->>> '+ str(id) +':'+ name+ ':' + str(v) ) #4.修改資料 cur.execute("insert into tb(id,name,score) values(9,'歷史',75)") cur.execute("update tb set score=95 where id=7") conn.commit() #修改資料後提交事務 #再查一次 cur.execute(sSQL) #5.一次取一條資料,cur.rowcount為-1 r=cur.fetchone() i=1 print('\n') while r: id,name,v =r #r是一個元祖 print('第 '+str(i)+' 行記錄->>> '+ str(id) +':'+ name+ ':' + str(v) ) r=cur.fetchone() i+= 1 conn.close()
(1)連線資料庫,指定連線引數
(2)開啟cursor,執行sql
(3)通過cursor獲取資料,具體可以是一次獲取所有資料,也可以是一次獲取一行。
整個結果集是元組列表,就是list型別的,而每一條記錄是一個tuple,也就是元祖。
(4)如果是增、改資料,必須就要呼叫commit()函式來提交事務,否則程式已退出,資料庫裡的資料不會有變化。
(5)最後要用close關閉連線。
執行效果: