python使用pyodbc,freetds连接azure数据库
2019獨角獸企業重金招聘Python工程師標準>>>
簡介:
微軟azure平臺推出sqldatabase paas服務?,F在使用python語言連接azure數據庫的小demo。
準備環境:
1,azure sqldatebase數據庫創建,參考http://www.windowsazure.cn/starter-guide/
第三課,創建云端的數據庫,
2,創建demo表,我是使用管理工具創建,sql語句代碼為:
IF?NOT?EXISTS?(SELECT?*?FROM?sys.objectsWHERE?object_id?=?OBJECT_ID(N'[dbo].[demo1]')AND?type?in?(N'U'))BEGINCREATE?TABLE?[dbo].[demo1](id?[int]?IDENTITY(1,1)?NOT?NULL,name?varchar(30)?not?nullCONSTRAINT?[PK_demo]?PRIMARY?KEY?CLUSTERED([id]?ASC)WITH?(IGNORE_DUP_KEY?=?OFF))END;GO需要注意的事項為:sqldatabase必須有一列為聚合鍵,如果沒有,創建表會失敗,臨時表沒有該限制。
可以參考http://azure.microsoft.com/en-us/documentation/articles/data-management-azure-sql-database-and-sql-server-iaas/
3,1臺azure linux虛擬機,我使用的ubuntu14.04 LTS
4,1個csv文件,只包含1列中文
開始動手
1,安裝包python,pyodbc,unixodbc,freetds-bin
2,開始配置,
(1)配置freetds.conf,常見位置/etc/freetds,/usr/local/etc/
#?server?specific?section [global]#?TDS?protocol?versiontds?version?=?7.2client?charset?=?UTF-8#?Whether?to?write?a?TDSDUMP?file?for?diagnostic?purposes#?(setting?this?to?/tmp?is?insecure?on?a?multi-user?system) ; dump?file?=?/tmp/freetds.log ; debug?flags?=?0xffff#?Command?and?connection?timeouts ; timeout?=?10 ; connect?timeout?=?10#?If?you?get?out-of-memory?errors,?it?may?mean?that?your?client#?is?trying?to?allocate?a?huge?buffer?for?a?TEXT?field.??#?Try?setting?'text?size'?to?a?more?reasonable?limit?text?size?=?64512[azure]host?=?hostname.database.chinacloudapi.cnport?=?1433tds?version?=?7.2其中,tds version選擇了7.2,添加了client charset,這是為了防止中文亂碼
(2)配置odbcinst.ini位置在/etc
[FreeTDS] Description?=?FreeTDS?Driver Driver?=?/usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so Setup?=?/usr/lib/x86_64-linux-gnu/odbc/libtdsS.so UsageCount?=?1(3)配置odbc.ini位置在/etc
[azure_odbc] Driver?=?FreeTDS Servername?=?azure Database?=?azureea其中azure_odbc為odbc的dsn,Servername為freetds配置節點,Driver為odbcinst的配置節點,Database為azure數據庫名稱
3,開始調試,調試的python代碼為:
#coding:utf-8 #!/usr/bin/env?python import?pyodbc import?csv from?datetime?import?datetime conn?=?pyodbc.connect('DSN=azure_odbc;UID=username@host;PWD=xxxxx;CHARSET=utf8;') cursor?=?conn.cursor() csvfile=file('name.csv','rb') reader=csv.reader(csvfile) for?line?in?reader:print?line[0]name=line[0]cursor.execute("insert?into?demo1(name)?values?(?);",name) conn.commit() conn.close() csvfile.close()到此,一個采集數據的小案例就完成了。
轉載于:https://my.oschina.net/longfirst/blog/368849
總結
以上是生活随笔為你收集整理的python使用pyodbc,freetds连接azure数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 近期北京动点软件发现XXX公司盗用我公司
- 下一篇: non-aggregates(非聚合)对