導航:首頁 > 編程語言 > pythonfreetds

pythonfreetds

發布時間:2022-08-10 17:12:37

『壹』 Redhat的linux下使用python里pyodbc模塊插入SQL Server數據中文亂碼

應該是資料庫和python腳本編碼方式不一樣,你把腳本編碼方式改成GBK或GB2312試試。

『貳』 Python在命令行下安裝pymssql出錯

You need to install the FreeTDS development package (freetds-dev) before trying to install pymssql with pip:

$ sudo apt-get install freetds-dev
and then, in your virtualenv or wherever you wish to install it:

$ pip install pymssql

『叄』 python 怎麼調用odbc

使用pypyodbc
import pypyodbc
pypyodbc.connect('Driver=FreeTDS;Server=192.168.1.2;port=1433;uid=sa;pwd=pwd1;')

『肆』 在windows上的python 連接 linux 並做點操作

訪問SqlServer

復制代碼代碼如下:

>>> import pyodbc

>>>cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=192.168.1.100\\sql;DATABASE=testDB;UID=sa;PWD=myPassword')
>>>cursor = cnxn.cursor()
>>>cursor.execute("select * from Tb")

二、Linux下配置Python訪問SqlServer
環境:CentOS 6.2 + Sqlserver 2008
1、安裝freetds:

復制代碼代碼如下:

yum install freetds*

2、安裝pyodbc:

復制代碼代碼如下:

yum install pyodbc

修改odbc配置:

復制代碼代碼如下:

vi /etc/odbcinst.ini

添加FreeTDS驅動:

復制代碼代碼如下:

[SQL Server]

Description = FreeTDS ODBC driver for MSSQL
Driver = /usr/lib/libtdsodbc.so
Setup = /usr/lib/libtdsS.so
FileUsage = 1

3、測試

復制代碼代碼如下:

#python

>>> import pyodbc
>>>cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=192.168.1.100\\sql;DATABASE=testDB;UID=sa;PWD=myPassword')
>>>cursor = cnxn.cursor()
>>>cursor.execute("select * from Tb")

『伍』 pyodbc操作MySQL求助

1、連接sql server:
conn_info = 'DRIVER={SQL Server};DATABASE=%s;SERVER=%s;UID=%s;PWD=%s'%(database, host, user, pwd)
self.mssql_conn = pyodbc.connect(conn_info)
self.mssql_cur = self.mssql_conn.cursor()
2、連接mysql
需要安裝mysql odbc:http://dev.mysql.com/downloads/connector/odbc/
conn_info = ('Driver={MySQL ODBC 5.1 Driver};Server=%s;Port=%s;Database=%s;User=%s; Password=%s;Option=3;'%(host, port, database, user, pwd ))
self.mysql_conn = pyodbc.connect(conn_info)
self.mysql_cur = self.mysql_conn.cursor()
3、MysqlDB
不需要安裝mysql odbc,http://sourceforge.net/projects/mysql-python/
目前linux版本支持到2.7,windows版本支持到2.5。
4、5、linux下pyodbc的安裝
需安裝unixODBC,Freetds,mysql-connector-odbc
5、linux下pyodbc的使用
pyodbc 不支持在在linux 使用如下連接方式
s= pyodbc.connect('DRIVER={SQL Server};SERVER=127.0.0.0;DATABASE=test;UID=test;PWD=test')
linux上正確的連接mssql的方式為
s= pyodbc.connect('DRIVER={FreeTDS};SERVER=127.0.0.0;DATABASE=test;UID=idc;PWD=test')

『陸』 python 怎麼調用odbc

入門
連接到資料庫
調用connect方法並傳入ODBC連接字元串,其會返回一個connect對象。通過connect對象,調用cursor()方法,可以獲取一個游標cursor。如下代碼示例:
import pyodbc
#連接示例: Windows系統, 非DSN方式, 使用微軟 SQL Server 資料庫驅動
cnxn =pyodbc.connect('DRIVER={SQL Server};SERVER=localhost;PORT=1433;DATABASE=testdb;UID=me;PWD=pass')
#連接示例: Linux系統, 非DSN方式, 使用FreeTDS驅動
cnxn =pyodbc.connect('DRIVER={FreeTDS};SERVER=localhost;PORT=1433;DATABASE=testdb;UID=me;PWD=pass;TDS_Version=7.0')
#連接示例:使用DSN方式
cnxn = pyodbc.connect('DSN=test;PWD=password')
# 打開游標
cursor =cnxn.cursor()
以上示例只是標准示例,具體的ODBC連接字元串以你自己使用的驅動為准。
查詢一些數據
所有SQL語句都使用Cursor.execute()方法執行。比如select語句會返回一些結果行,你可以使用游標(Cursor)相關的函數功能(fetchone,fetchall,fetchmany)對結果進行檢索。
Cursor.fetchone 用於返回一個單行( Row)對象:
cursor.execute("selectuser_id, user_name from users")
row =cursor.fetchone()
if row:
print(row)
Row 對象是類似一個python元組(tuples),不過也可以通過列名稱來訪問,例如:
cursor.execute("selectuser_id, user_name from users")
row =cursor.fetchone()
print('name:',row[1]) # 使用列索引號來訪問數據
print('name:',row.user_name) # 或者直接使用列名來訪問數據
當所有行都已被檢索,則fetchone返回None.
while 1:
row = cursor.fetchone()
if not row:
break
print('id:', row.user_id)
Cursor.fetchall方法返回所有剩餘行並存儲於一個列表中。如果沒有行,則返回一個空列表。(注意:如果有很多行,會造成大量內存佔用。Fetchall會一次性將所有數據查詢到本地,然後再遍歷)
cursor.execute("selectuser_id, user_name from users")
rows = cursor.fetchall()
for row in rows:
print(row.user_id, row.user_name)
如果並不在意數據處理時間,可以使用游標本身作為一個迭代器,逐行迭代。這樣可以節省大量的內存開銷,但是由於和數據來回進行通信,速度會相對較慢:
cursor.execute("selectuser_id, user_name from users"):
for row in cursor:
print(row.user_id, row.user_name)
由於Cursor.execute總是返回遊標(cursor), 所以也可以簡寫成:
for row incursor.execute("select user_id, user_name from users"):
print(row.user_id, row.user_name)
我們可以在execut中使用」」」三重引號,來應用多行SQL字元串。這樣sql的可讀性大大增強。這是python特有的特性:
cursor.execute(
"""
select user_id, user_name
from users
where last_logon < '2001-01-01'
and bill_overe = 1
""")
SQL參數
ODBC支持使用問號作為SQL的查詢參數佔位符。可以在execute方法的SQL參數之後,提供SQL參數佔位符的值:
cursor.execute(
"""
select user_id, user_name
from users
where last_logon < ?
and bill_overe = ?
""", '2001-01-01', 1)
這樣做可以防止SQL注入攻擊,提高安全性。如果使用不同的參數反復執行相同的SQL它效率會更高,這種情況下該SQL將只預裝(prepared )一次。(pyodbc只保留最後一條編寫的語句,所以如果程序在語句之間進行切換,每次都會預裝,造成多次預裝。)
Python的DB API指定參數應以序列(sequence)對象傳遞,所以pyodbc也支持這種方式:
cursor.execute(
"""
select user_id, user_name
from users
where last_logon < ?
and bill_overe = ?
""", ['2001-01-01', 1])
插入數據
插入數據使用相同的函數 - 通過傳入insert SQL和相關佔位參數執行插入數據:
cursor.execute("insertinto procts(id, name) values ('pyodbc', 'awesome library')")
cnxn.commit()
cursor.execute("insertinto procts(id, name) values (?, ?)", 'pyodbc', 'awesome library')
cnxn.commit()
注意:調用cnxn.commit()。發成錯誤可以回滾。具體需要看資料庫特性支持情況。如果數據發生改變,最好進行commit。如果不提交,則在連接中斷時,所有數據會發生回滾。
更新和刪除數據
更新和刪除工作以同樣的方式:通過特定的SQL來執行。通常我們都想知道更新和刪除的時候有多少條記錄受到影響,可以使用Cursor.rowcount來獲取值:
cursor.execute("deletefrom procts where id <> ?", 'pyodbc')
print('Deleted {}inferior procts'.format(cursor.rowcount))
cnxn.commit()
由於execute 總是返回遊標(允許你調用鏈或迭代器使用),有時我們直接這樣簡寫:
deleted =cursor.execute("delete from procts where id <> 'pyodbc'").rowcount
cnxn.commit()
注意一定要調用commit。否則連接中斷時會造成改動回滾。
技巧和竅門
引號
於單引號SQL是有效的,當值需要使用單引號時,使用用雙引號包圍的SQL:
cursor.execute("deletefrom procts where id <> 'pyodbc'")
如果使用三重引號, 我們可以這樣使用單引號:
cursor.execute(
"""
delete
from procts
where id <> 'pyodbc'
""")
列名稱
Microsoft SQLServer之類的一些資料庫不會產生計算列的列名,在這種情況下,需要通過索引來訪問列。我們也可以使用sql列別名的方式,為計算列指定引用名稱:
row =cursor.execute("select count(*) as user_count fromusers").fetchone()
print('{}users'.format(row.user_count)
當然也可以直接使用列索引來訪問列值:
count =cursor.execute("select count(*) from users").fetchone()[0]
print('{}users'.format(count)
注意,上例的首列不能是Null。否則fetchone方法將返回None並且會報NoneType不支持索引的錯誤。如果有一個默認值,經常可以是ISNULL或合並:
maxid =cursor.execute("select coalesce(max(id), 0) fromusers").fetchone()[0]
自動清理
連接(默認)在一個事務中。如果一個連接關閉前沒有提交,則會進行當前事務回滾。很少需要finally或except 語句來執行人為的清理操作,程序會自動清理。
例如,如果下列執行過程中任何一條SQL語句出現異常,都將引發導致這兩個游標執行失效。從而保證原子性,要麼所有數據都插入發生,要麼所有數據都不插入。不需要人為編寫清理代碼。
cnxn =pyodbc.connect(...)
cursor = cnxn.cursor()
cursor.execute("insertinto t(col) values (1)")
cursor.execute("insertinto t(col) values (2)")
cnxn.commit()

『柒』 python怎麼連接sqlserver

如果使用pyodbc,直接看2就可以了,可以略過1
1. Python連接mssql
ubuntu linux上
1.1
sudo apt-get install python
1.2 重啟終端
1.3

sudo apt-get --assume-yes update
sudo apt-get --assume-yes install freetds-dev freetds-bin
sudo apt-get --assume-yes install python-dev python-pip
sudo pip install pymssql

1.4
sudo vi /etc/freetds/freetds.conf
2.安裝pyodbc
2.1為了解決pyodbc.h:52:17: fatal error: sql.h: No such file or directory

sudo yum install unixODBC-devel.x86_64
然後:
sudo pip install pyodbc
2.2安裝MSSQL native client
2.3

編寫Python程序:
import pyodbc
conn = pyodbc.connect('DRIVER={SQL Server Native Client 11.0};
SERVER=aaaa; UID=bbbb; PWD=ccc; DATABASE=ddd; Encrypt=yes;
TrustServerCertificate=no');
cursor = conn.cursor()
cursor.execute("select count(distinct d) as cnt from ddddd6 where day_id=20160531")
row = cursor.fetchone()
while row:
print str(row[0])
row = cursor.fetchone()

『捌』 Ubuntu下安裝pymssql的問題

python的dev包 和freetds的dev包有沒有裝?

然後看一下這些頭文件系統里有沒有:
Python.h, structmember.h, datetime.h, sqlfront.h, sqldb.h

閱讀全文

與pythonfreetds相關的資料

熱點內容
修改aix默認加密演算法 瀏覽:661
海邊散步放鬆解壓一下 瀏覽:21
空調有不帶壓縮機的嗎 瀏覽:61
java職業規劃面試 瀏覽:985
pdf填色 瀏覽:145
ie運行java 瀏覽:637
單相空調壓縮機的構造 瀏覽:136
迅雷app的回收站在哪裡啊 瀏覽:595
加密技術的特點包括4點 瀏覽:561
pcre源碼包 瀏覽:67
崑山ug數控編程培訓 瀏覽:520
integer類源碼 瀏覽:819
java排序的時間復雜度 瀏覽:859
伺服器陣列卡壞了怎麼維修 瀏覽:537
shm演算法 瀏覽:520
可愛的程序員陸漓離開 瀏覽:608
如何把掃描文件做成pdf格式 瀏覽:626
php個性qq源碼 瀏覽:821
初學c語言顯示源未編譯 瀏覽:247
資產概況源碼 瀏覽:473