python與mysql的連接

安裝第三方連接mysqldb 的庫
MySQLdb 是用於Python連接Mysql數據庫的接口,它實現了 Python 數據庫 API 規範 V2.0,基於 MySQL C API 上創建的。
centos 下
yum install -y MySQL-python
ubuntu
apt-get install -y python-mysqldb
 
或者
(Linux平臺能夠訪問: https://pypi.python.org/pypi/MySQL-python)從這裏可選擇適合您的平臺的安裝包,分爲預編譯的二進制文件和源代碼安裝包。
若是您選擇二進制文件發行版本的話,安裝過程基本安裝提示便可完成。若是從源代碼進行安裝的話,則須要切換到MySQLdb發行版本的頂級目錄,並鍵入下列命令:
 
gunzip MySQL-python-1.2.2.tar.gz
tar -xvf MySQL-python-1.2.2.tar
cd MySQL-python-1.2.2
python setup.py build
python setup.py install

 

 
 
windows環境python2.7安裝MySQLdb
我電腦是64位,而且安裝python不是默認路徑,使用pip和mysql-python的exe文件安裝都失敗了。
確保安裝了wheel
pip install wheel
 
 
去這個網站查找whl格式的MYSQL-python
下載對應版本個人是
MySQL_python-1.2.5-cp27-none-win_amd64.whl
在下載目錄進入cmd(shift加右鍵),執行

pip install MySQL_python-1.2.5-cp27-none-win_amd64.whl
 
多python版本環境能夠指定相關版本的python

python27 -m pip install MySQL_python-1.2.5-cp27-none-win_amd64.whl
 
測試一下
import MySQLdb
 
 
 
mysql連接配置
 
def connect_mysql():
    db_config = {
        'host': '192.168.48.128',
        'port': 3306,
        'user': 'xiang',
        'passwd': '123456',
        'db': 'python',
        'charset': 'utf8'
    }
    cnx = MySQLdb.connect(**db_config)
return cnx

 

查詢mysql用戶列表
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import MySQLdb
try:                   
    conn=MySQLdb.connect(host='localhost',user='root',passwd='toor',db='mysql',port=3306)     ##連接數據庫
    cur=conn.cursor()                          ##使用cursor()方法獲取操做遊標
    cur.execute('select User,Host from user')  ##使用execute方法執行SQL語句
    qur_result  = cur.fetchall()               ##使用 fetchone() 方法獲取一條數據庫
 
    for record in qur_result:
        print record
    cur.close()     #關閉操做
    conn.close()    ##關閉連接
except MySQLdb.Error,e:
    print 'Myslq Rrror Msg:',e 

 

建立數據庫,建立表,插入數據python

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import MySQLdb
try:                   
    db=MySQLdb.connect(host='localhost',user='root',passwd='toor',port=3306)     ##連接數據庫
    cur=db.cursor()                          ##使用cursor()方法獲取操做遊標
    # 1 建立庫
    cur.execute('create database if not exists test')  ##建立數據 test
    db.select_db('test')                       ##切換數據庫
    # 2 建立表
    cur.execute('''
        create table stu_info(
            id int(5) not null primary key auto_increment,
            name char(10) not null,
            phone int(12) not null,
            class char(20)
            );
         ''')
    # 3 插入單條數據,.rollback()插入錯誤回滾
    try:
        info = ('abc',123456,'linux')
        sql = 'insert into stu_info values(null,%s,%s,%s)',info
        cur.execute(sql)  ##執行sql語句插入數據
        db.commit()                             ##提交,提交後沒法回滾
    except:
        db.rollback()                           ##發生錯誤時回滾
    # 4 插入多條數據,.executemany()重複執行帶參數的單條命令
    try:
        values_list = []
        for i in range(10):
            values_list.append(('abc_%s' i,'12345670%s' i,'python'))
        cur.executemany('insert into stu_info values(null.%s,%s,%s)',valuse_list)
        db.commit()
    except:
        db.rollback()   
    # 5  .fetchone() 查詢返回一條結果
    cur.execute('select * from stu_info')       ##查詢插入後的表
    qur_result  = cur.fetchone()                ##使用 fetchone() 方法獲取一條數據庫
    for record in qur_result:                   ##循環打印出獲取到的每條數據
        print record     
    # 6  .fetchall() 返回所有結果
    cur.execute('select * from stu_info')       ##查詢插入後的表
    qur_result  = cur.fetchall()                ##使用 fetchall() 所有的返回結果行
    print qur_result    
    # 7  .scroll() 移動指針到某一行,查詢行後面的結果
    cur.execute('select * from stu_info')
    cur.scroll(14,'python')
    print cur.fetchall()
    
    cur.close()   ##關閉操做
    db.close()    ##關閉連接
except MySQLdb.Error,e:
    print 'Myslq Rrror Msg:',e 

 

commit() 提交
rollback() 回滾mysql

cursor: 用來執行命令的方法linux

.callproc(self, procname, args):用來執行存儲過程,接收的參數爲存儲過程名和參數列表,返回值爲受影響的行數
.execute(self, query, args):執行單條sql語句,接收的參數爲sql語句自己和使用的參數列表,返回值爲受影響的行數
.executemany(self, query, args):執行單挑sql語句,可是重複執行參數列表裏的參數,返回值爲受影響的行數
.nextset(self):移動到下一個結果集

cursor用來接收返回值的方法:
.fetchall(self):接收所有的返回結果行.
.fetchmany(self, size=None):接收size條返回結果行.若是size的值大於返回的結果行的數量,則會返回cursor.arraysize條數據.
.fetchone(self):返回一條結果行.
.scroll(self, value, mode='relative'):移動指針到某一行.若是mode='relative',則表示從當前所在行移動value條,若是 mode='absolute',則表示從結果集的第一行移動value條.sql

相關文章
相關標籤/搜索