python開發中,使用數據庫是已經再普通不過的事情了。現在的NoSQL也很流行,但暫不涉及。本文主要記錄python中連接常用關系型數據庫的問題。今天在配置sql server連接時遇到了不同的模塊,從而整理整個數據庫模塊的操作。(環境:windows,python2.7)
首先概括下面會談到的常用關系型數據庫:SQLite、MySQL、PoesgreSQL、Oracle、SQL Server、 excel
- SQLite:sqlite3。(python2.5+內置)
- MySQL: MySQLdb
- PoesgreSQL:postgresql_psycopg2()
- Oracle: cx_Oracle
- SQL Server: pymssql、pyodbc、adodbapi
- excel: pyExcelertor
1.1 SQL Server: pymssql
安裝pymssql,cmd下執行pip install pymssql,然后 在交互頁面或者IDLE中 import pymmsql 出現找不到指定的模塊。pip安裝最新的pymssql2.1.2,但是

- 安裝FreeTDS
Python 版本 | VS |
---|---|
2.7 | vs2008 |
3.3 或者 3.4 | vs2010 |
3.5 | vs2015 |
下載解壓出來后找到里面一個包含 DLL 文件的文件夾,將這個目錄添加到系統或用戶的
PATH
變量里面。
- 安裝openssl
接着下載預編譯好的 openssl,根據自己的 Python 版本選擇對應 vs 版本的 7z 文件(見上表)。解壓出來后同樣找到里面包含 DLL 文件的文件夾(64 位系統可以選擇文件夾名帶 64 的),然后將這個目錄添加到PATH
變量里面。
我的兩個目錄是:
C:\freetds-v0.95.81-win-x86_64-vs2008\lib;
C:\openssl-1.0.1q-vs2008\bin64;
使用:
import pymssql
conn=pymssql.connect(server="127.0.0.1",port="1433",user="sa",password="123",database="myblog",charset="UTF-8")
cursor
=
conn.cursor()
conn.close()
1.2 SQL Server: pyodbc
安裝pyodbc,cmd下 pip install pyodbc,使用如下:
import pyodbc
連接數據庫
1)直接連接數據庫和創建一個游標(cursor)
1
2
|
cnxn
=
pyodbc.connect(
'DRIVER={SQL Server};SERVER=localhost;DATABASE=testdb;UID=me;PWD=pass'
)
cursor
=
cnxn.cursor()
|
2)使用DSN連接。通常DSN連接並不需要密碼,還是需要提供一個PSW的關鍵字。
1
2
|
cnxn
=
pyodbc.connect(
'DSN=test;PWD=password'
)
cursor
=
cnxn.cursor()
|
1.3 SQL Server: adodbapi
安裝adodbapi ,cmd下 pip install adodbapi 或者安裝pywin32(Since pywin32 release 211, adodbapi is included )
使用:
import adodbapi
conn={'server':'192.168.29.86\\eclexpress','password':'xxxx','db':'pscitemp'}
constr = r"Provider=SQLOLEDB.1; Initial Catalog=%s; Data Source=%s; user ID=%s; Password=%s; " \
% (conn['db'], conn['server'], 'sa', conn['password'])
% (conn['db'], conn['server'], 'sa', conn['password'])
conn=adodbapi.connect(constr)
2、SQLite:sqlite3的使用
import sqlite3
#打開db文件,獲得連接
conn = sqlite3.connect('數據文件名')
#獲得游標
c = conn.cursor()
#執行SQL
c.execute('''SQL 片段''')
#如果有對數據的修改操作,那就需要commit一下
conn.commit()
#關閉游標
c.close()
#關閉連接
conn = sqlite3.connect('數據文件名')
#獲得游標
c = conn.cursor()
#執行SQL
c.execute('''SQL 片段''')
#如果有對數據的修改操作,那就需要commit一下
conn.commit()
#關閉游標
c.close()
#關閉連接
conn.close()
3、MySQL: MySQLdb的連接
import MySQLdb
conn=MySQLdb.connect(host="localhost",user="root",passwd="",db="test",charset="utf8")
cursor = conn.cursor()
4、PoesgreSQL:postgresql_psycopg2
import psycopg2
conn = psycopg2.connect(database="testdb", user="postgres", password="pass123", host="127.0.0.1", port="5432")
print "Opened database successfully"
cur = conn.cursor()
5、Oracle: cx_Oracle
import cx_Oracle #引用模塊cx_Oracle
conn=cx_Oracle.connect('load/123456@localhost/ora11g') #連接數據庫
c=conn.cursor() #獲取cursor
conn=cx_Oracle.connect('load/123456@localhost/ora11g') #連接數據庫
c=conn.cursor() #獲取cursor
6、excel: pyExcelertor
from pyExcelerator import *
sheets=pyExcelerator.parse_x
ls('xxx.xls') #讀取文件內容