最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python操作Sql Server 2008數(shù)據(jù)庫的方法詳解

 更新時間:2018年05月17日 14:43:04   作者:至死孤獨  
這篇文章主要介紹了Python操作Sql Server 2008數(shù)據(jù)庫的方法,結合實例形式分析了Python使用pyodbc庫操作Sql Server 2008數(shù)據(jù)庫的連接、執(zhí)行sql語句、關閉連接等相關操作技巧與注意事項,需要的朋友可以參考下

本文實例講述了Python操作Sql Server 2008數(shù)據(jù)庫的方法。分享給大家供大家參考,具體如下:

最近由于公司的一個項目需要,需要使用Sql Server 2008數(shù)據(jù)庫,開發(fā)語言使用Python,并基于windows平臺上的Wing IDE4.0進行。

之前并未使用過Sql Server數(shù)據(jù)庫,這次也當作一次練手,并把這次數(shù)據(jù)庫前期開發(fā)過程中遇到的一些問題進行記錄。

一、關于pyodbc庫和pymssql庫的選擇

在使用python語言進行開發(fā)之前,需要確定使用哪種第三方的數(shù)據(jù)庫操作接口,目前Python提供了一些庫,如pymssql和pyodbc,目前網(wǎng)上資料比較多的也是這兩個了。剛開始我嘗試安裝并使用了pymssql庫,但是始終無法通過python應用程序遠程訪問連接Sql Server數(shù)據(jù)庫,由于對windows平臺又不太熟悉,網(wǎng)上查了一些資料未果,說是需要依賴feeds,還需要設置各種變量等,最終我放棄了它改用pyodbc,雖然也遇到一些小問題,但是總體來說非常順利。

二、關于pyodbc庫的一些接口說明

基于第三方python庫來訪問Sql Server數(shù)據(jù)庫的過程非常簡單(其實除了能訪問sql server外,它還可以訪問其它數(shù)據(jù)庫,因為它們都基于標準的DB-API2.0標準),總共只需要四步:打開并連接數(shù)據(jù)庫connect、 獲取游標指針、執(zhí)行數(shù)據(jù)庫sql操作、關閉數(shù)據(jù)庫連接

1 打開連接數(shù)據(jù)庫

復制代碼 代碼如下:
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=localhost;DATABASE=testdb;UID=me;PWD=pass')

或者是:

復制代碼 代碼如下:
cnxn = pyodbc.connect(DRIVER='{SQL Server}',SERVER='localhost',DATABASE='testdb',UID='me',PWD='pass')

這里簡單說明一下參數(shù):

DRIVER='{SQL Server}'這個一般是固定的,除非你在Sql Server作了更改。
SERVER:此參數(shù)為數(shù)據(jù)庫服務器名稱,不是"192.168.0.X"這種,一般在安裝時命名好了,我的是:ZHANGHUAMIN\MSSQLSERVER_ZHM
DATABASE:此參數(shù)指的是Sql Server內具體的數(shù)據(jù)庫了,使用這個connect接口連接之前在sqlserver內應該是已經先創(chuàng)建好并存在的,否則連接不上。
UID:用戶名
PWD:密碼

執(zhí)行完畢后,如果成功將返回一個數(shù)據(jù)庫連接句柄。

2 獲取游標指針

cursor = cnxn.cursor()

后面對數(shù)據(jù)庫執(zhí)行的sql語句將使用游標指針來操作

3 執(zhí)行數(shù)據(jù)庫sql操作

cursor.execute("select user_id, user_name from users") #調用游標指針的execute方法執(zhí)行sql語句
row = cursor.fetchone() #sql語句執(zhí)行結果的獲取,如果需要一次獲取多條記錄,可以使用cursor.fetchall()方法
if row:
  print row

有時對數(shù)據(jù)庫執(zhí)行完sql語句后需要對此事務進行提交,使用如下接口:

cnxn.commit() 

特別是當創(chuàng)建一個數(shù)據(jù)庫或數(shù)據(jù)表,若未進行提交事務,在Sql Server2008終端上將找不到創(chuàng)建的數(shù)據(jù)庫及數(shù)據(jù)表,如果提交后,在sql server2008通過終端的查詢sql 語句就可以即時查到。注:提交事務的commit方法屬于數(shù)據(jù)庫的連接句柄對象

4 關閉數(shù)據(jù)庫連接

cnxn.close() 

與文件操作類似,不再說明。

三、用python操作Sql Server 2008數(shù)據(jù)庫的具體例程

#!/usr/bin/python
#coding=utf-8
#-------------------------------------------------------------------------------
# Name: datamapper.py
# Purpose: using pyodbc library to operate database
#
# Author: huamin.zhang
#
# Created: 20/04/2013
#-------------------------------------------------------------------------------
import pyodbc
import time
class ODBC_MS:
  ''''' 對pyodbc庫的操作進行簡單封裝
  pyodbc庫的下載地址:http://code.google.com/p/pyodbc/downloads/list
  使用該庫時,需要在Sql Server Configuration Manager里面將TCP/IP協(xié)議開啟
  此類完成對數(shù)據(jù)庫DB的連接/查詢/執(zhí)行操作
  正確的連接方式如下:
  cnxn = pyodbc.connect('DRIVER={SQL SERVER};SERVER=ZHANGHUAMIN\MSSQLSERVER_ZHM;DATABASE=AdventureWorks2008;UID=sa;PWD=wa1234')
  cnxn = pyodbc.connect(DRIVER='{SQL SERVER}',SERVER=r'ZHANGHUAMIN\MSSQLSERVER_ZHM',DATABASE='AdventureWorks2008',UID='sa',PWD='wa1234',charset="utf-8")
  '''
  def __init__(self, DRIVER,SERVER, DATABASE, UID, PWD):
    ''''' initialization '''
    self.DRIVER = DRIVER
    self.SERVER = SERVER
    self.DATABASE = DATABASE
    self.UID = UID
    self.PWD = PWD
  def __GetConnect(self):
    ''''' Connect to the DB '''
    if not self.DATABASE:
      raise(NameError,"no setting db info")
    self.conn = pyodbc.connect(DRIVER=self.DRIVER, SERVER=self.SERVER, DATABASE=self.DATABASE, UID=self.UID, PWD=self.PWD, charset="UTF-8")
    #self.conn = pyodbc.connect(DRIVER=self.DRIVER, SERVER=self.SERVER, DATABASE=self.DATABASE, UID=self.UID, PWD=self.PWD)
    cur = self.conn.cursor()
    if not cur:
      raise(NameError,"connected failed!")
    else:
      return cur
  def ExecQuery(self, sql):
    ''''' Perform one Sql statement '''
    cur = self.__GetConnect() #建立鏈接并創(chuàng)建數(shù)據(jù)庫操作指針
    cur.execute(sql)#通過指針來執(zhí)行sql指令
    ret = cur.fetchall()#通過指針來獲取sql指令響應數(shù)據(jù)
    cur.close()#游標指標關閉
    self.conn.close()#關閉數(shù)據(jù)庫連接
    return ret
  def ExecNoQuery(self,sql):
    ''''' Person one Sql statement like write data, or create table, database and so on'''
    cur = self.__GetConnect()
    cur.execute(sql)
    self.conn.commit()#連接句柄來提交
    cur.close()
    self.conn.close()
def main():
  ms = ODBC_MS('{SQL SERVER}', r'ZHANGHUAMIN\MSSQLSERVER_ZHM', 'zhm_db', 'sa', 'wa1234')#zhm_db數(shù)據(jù)庫是在sql server 終端里先創(chuàng)建好的
  #ms.ExecNoQuery("drop table Customers_test")
  sql = '''''CREATE TABLE Customers_test
  (
    CustomerNo   int       IDENTITY   NOT NULL,
    CustomerName  varchar(30)         NOT NULL,
    Address1    nvarchar(30)         NOT NULL ,
    Address2    nvarchar(30)         NOT NULL,
    City      nvarchar(20)         NOT NULL,
    State     nchar(20)          NOT NULL,
    Zip      varchar(10)         NOT NULL,
    Contact    varchar(25)         NOT NULL,
    Phone     char(15)           NOT NULL,
    FedIDNo    varchar(9)          NOT NULL,
    DateInSystem  smalldatetime        NOT NULL
  );'''
  ms.ExecNoQuery(sql)
  #注意:在進行插入操作時,自增長度不能夠寫入
  sql = u'''''insert into Customers_test
  (
    CustomerName,
    Address1,
    Address2,
    City,
    State,
    Zip,
    Contact,
    Phone,
    FedIDNo,
    DateInSystem
  )
  VALUES
  (
    'zhm', '北京市朝陽區(qū)', '北京市朝陽區(qū)', '北京', '哈哈','3625514', '18001226509', '010-88765879', '21', '2012-09-09'
  );
  '''
  ms.ExecNoQuery(sql)
if __name__ == '__main__':
  main()

說明:我之前連接了一個Sql Server自帶的AdventureWorks2008數(shù)據(jù)庫例程,并在其中創(chuàng)建了一個如上數(shù)據(jù)表Customers_test,然后插入一條如上記錄,結果在Sql Server2008的終端上用Select * FROM Customers_test查詢,結果對包含中文信息字段的數(shù)據(jù)變成如“??????”的亂碼,經過倒騰了一上午,唯一可能解釋的原因可能在于AdventureWorks2008數(shù)據(jù)庫做了一些我不知道的約束,中文所對應的編碼它不支持。 因為在如上例程中,我自己創(chuàng)建的zhm_db數(shù)據(jù)庫,并在其中創(chuàng)建數(shù)據(jù)表,然后插入記錄,同樣的在Sql Server終端里用select查詢,中文也是可以正常顯示的。

注意,在python程序中需要增加:#coding = utf-8編碼,并在連接connect內增加charset = "utf-8"指明字符集為utf-8編碼即可。這樣可以防止亂碼的出現(xiàn)

最后在Sql Server 2008內通過終端使用SELECT * FROM Customers_test顯示的結果如下:

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python常見數(shù)據(jù)庫操作技巧匯總》、《Python編碼操作技巧總結》、《Python數(shù)據(jù)結構與算法教程》、《Python Socket編程技巧總結》、《Python函數(shù)使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設計有所幫助。

相關文章

  • Python 實現(xiàn)Windows開機運行某軟件的方法

    Python 實現(xiàn)Windows開機運行某軟件的方法

    今天小編就為大家分享一篇Python 實現(xiàn)Windows開機運行某軟件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Jupyter?Notebook的使用詳解

    Jupyter?Notebook的使用詳解

    JupyterNotebook是一個強大的工具,可以用于數(shù)據(jù)科學和機器學習等領域的各種任務,該文章介紹了JupyterNotebook的基本使用方法,包括新建和保存Notebook,插入圖像,運行代碼,以及許多快捷鍵的使用
    2025-01-01
  • django 裝飾器 檢測登錄狀態(tài)操作

    django 裝飾器 檢測登錄狀態(tài)操作

    這篇文章主要介紹了django 裝飾器 檢測登錄狀態(tài)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Python常用外部指令執(zhí)行代碼實例

    Python常用外部指令執(zhí)行代碼實例

    這篇文章主要介紹了Python常用外部指令執(zhí)行代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • 教你用Python為二年級的學生批量生成數(shù)學題

    教你用Python為二年級的學生批量生成數(shù)學題

    這兩天在學習pthon,正好遇到老師布置的暑假作業(yè),需要家長給還在出試卷,下面這篇文章主要給大家介紹了關于如何用Python為二年級的學生批量生成數(shù)學題的相關資料,需要的朋友可以參考下
    2023-02-02
  • 使用Python進行QQ批量登錄的實例代碼

    使用Python進行QQ批量登錄的實例代碼

    這篇文章主要介紹了使用Python進行QQ批量登錄的實例代碼,代碼簡單易懂非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-06-06
  • python 浮點數(shù)四舍五入需要注意的地方

    python 浮點數(shù)四舍五入需要注意的地方

    這篇文章主要介紹了python 四舍五入需要注意的地方,幫助大家避免一些不必要的坑,感興趣的朋友可以了解下
    2020-08-08
  • Pandas分組函數(shù)groupby的用法詳解

    Pandas分組函數(shù)groupby的用法詳解

    在數(shù)據(jù)分析時,經常需要將數(shù)據(jù)分成不同的群組,pandas中的groupby()函數(shù)可以完美地完成各種分組操作,本文就來介紹一下Pandas分組函數(shù)groupby的用法,感興趣的可以了解一下
    2024-01-01
  • Python中.py文件和.ipynb文件的區(qū)別詳解

    Python中.py文件和.ipynb文件的區(qū)別詳解

    Python開發(fā)者常用的兩種文件格式.py和.ipynb各有特點,本教程將通過對比分析、代碼示例和場景說明,幫助開發(fā)者全面理解二者的區(qū)別與聯(lián)系,需要的朋友可以參考下
    2025-04-04
  • 在Python 不同級目錄之間模塊的調用方法

    在Python 不同級目錄之間模塊的調用方法

    今天小編就為大家分享一篇在Python 不同級目錄之間模塊的調用方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01

最新評論

宜川县| 霍城县| 辽阳县| 岚皋县| 梓潼县| 盖州市| 怀安县| 高台县| 阿勒泰市| 唐海县| 元阳县| 图木舒克市| 茂名市| 雷山县| 成武县| 通河县| 墨玉县| 上高县| 凉城县| 秦皇岛市| 林芝县| 大田县| 涞源县| 彭水| 高邑县| 沁阳市| 沧源| 江门市| 霍山县| 元江| 萝北县| 华蓥市| 中江县| 甘泉县| 望奎县| 旬邑县| 三亚市| 平和县| 翁源县| 盘锦市| 呼玛县|