Windowsx64位安装pymssql并完成与数据库链接
From:https://www.cnblogs.com/loyung/p/6929323.html
常流程只需要打開下載并按照常規(guī)方法安裝mssql包即可在程序中import pymssql,不過安裝mssql確實(shí)有些小麻煩。
從開始安裝就開始出現(xiàn)了各種異常錯(cuò)誤
首先出現(xiàn)sqlfront.h文件找不多,查了很多資料也沒有看明白是什么個(gè)原因。。
最終在這里仔細(xì)閱讀了一下文檔,開始一步步嘗試往下解決
大致的意思是講其實(shí)pymssql是依賴于一個(gè)叫FreeTDS的東西,查了一下它是一個(gè)C語言鏈接sqlserve的公共開源庫。
在windows下安裝接下來參照這篇文檔說明開始準(zhǔn)備下載freetds-v0.95.95-win-x86-vs2008.zip
當(dāng)然這里可以根據(jù)自己的Python版本去下載對(duì)應(yīng)的包,下載地址
?
下載完后發(fā)現(xiàn)里邊的文件目錄大致是這樣的
打開include一看,原來我需要的文件都在這個(gè)文件里,然后就把這個(gè)的所有文件bin+include+lib+lib-nossl全部copy到python的安裝目錄再試一下沒有原來的錯(cuò)誤了
新的問題又出現(xiàn)了,無法打開輸入文件“db-lib.lib”
?這里就比較蛋疼了,單仔細(xì)閱讀以下,翻到文章結(jié)尾的安裝包
既然用pymssql-2.1.3.tar.gz不能正確安裝,就換一種方式,于是下載了2中的whl文件
下載完后將?pymssql-2.1.3-cp27-cp27m-win_amd64.whl放在安裝文件目錄中,運(yùn)行CMD到指定文件目錄
這時(shí)出現(xiàn)以下錯(cuò)誤:
Requirement already satisfied: pymssql==2.1.3 from file:///C:/Python/pymssql-2.1
.3-cp27-cp27m-win_amd64.whl in c:\python2.7.11\lib\site-packages
錯(cuò)誤提示很明顯示因?yàn)橹鞍惭b時(shí)已經(jīng)將文件放在了c:\python2.7.11\lib\site-packages文件中,因此在site-packages中刪掉pymssql的安裝,再試一次順利完成!
最后為了驗(yàn)證以下,在文件中鏈接當(dāng)前數(shù)據(jù)庫看一下是否可以連通。。
#coding:utf-8 import urllib2 import os import sys reload(sys) sys.setdefaultencoding("utf-8") import urllib import string from bs4 import BeautifulSoup #導(dǎo)入解析html源碼模塊 import pymssql #導(dǎo)入mssql數(shù)據(jù)庫連接包 conn=pymssql.connect(host='127.0.0.1',user='testdb',password='testdb@123',database='IM_CRM') cur=conn.cursor() cur.execute('select top 5 * from [dbo].[crm_Cart]')#如果update/delete/insert記得要conn.commit()#否則數(shù)據(jù)庫事務(wù)無法提交 print (cur.fetchall()) cur.close() conn.close()打印結(jié)果看一下
對(duì)比以下數(shù)據(jù)庫
仔細(xì)觀察沒有問題,用這種方式一樣可以鏈接數(shù)據(jù)庫,到這里就開始后面的詳細(xì)業(yè)務(wù)編寫吧。
最后再附一個(gè)抓取的py文件吧
#coding:utf-8 import urllib2 import os import sys reload(sys) sys.setdefaultencoding("utf-8") import time import datetime import urllib import string from bs4 import BeautifulSoup #導(dǎo)入解析html源碼模塊 import pymssql #導(dǎo)入mssql數(shù)據(jù)庫連接包print "開始時(shí)間:"+datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')#抓取頁面邏輯 for num in range(101,200+1):#頁數(shù)控制url = "http://xxx/Suppliers.asp?page="+str(num)+"&hdivision=" #循環(huán)ip地址header = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0","Referer":"http://xxx/suppliers.asp"}req = urllib2.Request(url,data=None,headers=header)req.encding="utf-8"ope = urllib2.urlopen(req)#請(qǐng)求創(chuàng)建完成soup = BeautifulSoup(ope.read(), 'html.parser')COMCount = 0tableTrList=soup.select("table tr")tableTrList.remove(tableTrList[0])for trtag in tableTrList:COMCount+=1companyname= trtag.contents[1].a.string # 公司名稱area=trtag.contents[3].string # 地區(qū)tel=trtag.contents[5].string # 電話web = trtag.contents[7].a.string # 網(wǎng)址prolisturl=trtag.contents[11].a['href']#產(chǎn)品列表鏈接companyID=prolisturl[20:] #獲取公司對(duì)應(yīng)IDprint str(COMCount)+'獲取產(chǎn)品列表鏈接:http://www.xxx/'+prolisturlif companyname is None:companyname=""if area is None:area = ""if tel is None:tel = ""if web is None:web = ""print "公司名稱:"+companynameprint "地區(qū):" + areaprint "電話:" + telprint "網(wǎng)址:" + webprint str(COMCount)+"公司信息開始寫入:"+"INSERT INTO [dbo].[Company](BioID,ComName,Area,Tel,WebSite,InDate) VALUES ('"+companyID+"','"+companyname+"','"+area+"','"+tel+"','"+web+"','"+datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')+"') "#寫入企業(yè)信息起conn = pymssql.connect(host='GAOMS-PC\SQLEXPRESS', user='test', password='abc123!@#', database='BIO-EQUI')cur = conn.cursor()cur.execute("INSERT INTO [dbo].[Company](BioID,ComName,Area,Tel,WebSite,InDate) VALUES ('"+companyID+"','"+companyname+"','"+area+"','"+tel+"','"+web+"','"+datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')+"') ")conn.commit()cur.close()conn.close()#寫入企業(yè)信息止print str(COMCount)+"公司信息寫入完成"#驗(yàn)證公司下是否有產(chǎn)品urlpropage="http://xxx/otherproduct.asp?id="+companyID#urlpropage="http://xxx/otherproduct.asp?id=64356"#測(cè)試某一產(chǎn)品地址排查異常使用headerpropage = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0","Referer": "" + url}reqpropage = urllib2.Request(urlpropage, data=None, headers=headerpropage)reqpropage.encding = "utf-8"opepropage = urllib2.urlopen(urlpropage)souppropage = BeautifulSoup(opepropage.read(), 'html.parser')tableTrPageCount = souppropage.select("table tr")ProPageCount='0'if (len(tableTrPageCount) > 0):try:ProPageCount=str(souppropage.select("form p")[0])dijiye=ProPageCount[ProPageCount.index("第"):].replace("\r\n"," ").replace("</p>"," ").strip()ProPageCount=dijiye[dijiye.index("/")+1:].replace("頁"," ").strip()print "產(chǎn)品"+str(COMCount)+"下包含"+ProPageCount+"頁產(chǎn)品__________________________________"PROCount = 0# 循環(huán)獲取產(chǎn)品列表內(nèi)容if (int(ProPageCount)>2):ProPageCount=2 #如果產(chǎn)品頁數(shù)過多只去前2頁for numpro in range(1, int(ProPageCount)+1):urlprolist = "http://www.bio-equip.com/" + str(prolisturl) + "&page=" + str(numpro) + "&hdivision=" # 循環(huán)鏈接headerprolist = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0","Referer": "" + url}reqprolist = urllib2.Request(urlprolist, data=None, headers=headerprolist)reqprolist.encding = "utf-8"opeprolist = urllib2.urlopen(reqprolist)soupprolist = BeautifulSoup(opeprolist.read(), 'html.parser')tableTrListCount = soupprolist.select("table tr")#print tableTrListCount 打印獲取的表格數(shù)據(jù)tableTrListCount.remove(tableTrListCount[0])for trtagPro in tableTrListCount:PROCount += 1proname = trtagPro.contents[0].a.string # 產(chǎn)品名稱proPlace = trtagPro.contents[2].string # 產(chǎn)品產(chǎn)地ProType = trtagPro.contents[4].string # 產(chǎn)品型號(hào)if proPlace is None:proPlace = ""if area is None:area = ""if ProType is None:ProType = ""print "產(chǎn)品名稱:" + proPlaceprint "產(chǎn)品產(chǎn)地:" + areaprint "產(chǎn)品型號(hào):" + ProTypeprint "獲取" + str(COMCount) + "下產(chǎn)品:" + str(PROCount) + proname + "第" + str(numpro) + "頁"print str(COMCount)+"_"+str(PROCount)+"產(chǎn)品寫入開始"+"INSERT INTO [dbo].[Product](ComID,ProName,ProPlace,ProType) VALUES ('" + companyID + "','" + proname + "','" + proPlace + "','" + ProType + "') "# 寫入企業(yè)產(chǎn)品信息起connpro = pymssql.connect(host='GAOMS-PC\SQLEXPRESS', user='test', password='abc123!@#',database='BIO-EQUI')curpro = connpro.cursor()curpro.execute("INSERT INTO [dbo].[Product](ComID,ProName,ProPlace,ProType,InDate) VALUES ('" + companyID + "','" + proname + "','" + proPlace + "','" + ProType + "','"+datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')+"') ")connpro.commit()curpro.close()connpro.close()# 寫入企業(yè)產(chǎn)品信息止except Exception:pass print "結(jié)束時(shí)間:" + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))總結(jié)
以上是生活随笔為你收集整理的Windowsx64位安装pymssql并完成与数据库链接的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小甲鱼 OllyDbg 教程系列 (六)
- 下一篇: 王爽 汇编语言第三版 第11章 标志寄存