python MySQLdb使用

來源:互聯網
上載者:User

標籤:

官網地址:http://mysql-python.sourceforge.net/MySQLdb User‘s Guide http://mysql-python.sourceforge.net/MySQLdb.html

使用:

匯入python-MySQLdb 模組
import MySQLdb #匯入python-MySQLdb 模組conn = MySQLdb.connect( #建立connection host=‘192.168.10.128‘, user=‘root‘, passwd=‘123456‘, port=3306, charset=‘utf8‘)cursor = conn.cursor() #擷取cursor遊標
print conn
print cursor
sql = "show databases"
cursor.execute(sql)

conn.commit()  #
cursor.close() #關閉cursor
conn.close() #關閉串連

輸出結果:

>>> <_mysql.connection open to ‘192.168.10.128‘ at 2ea5da8><MySQLdb.cursors.Cursor object at 0x0000000002F64198>>>> 

建立串連:MySQLdb.connect(參數)

參數名   類型 說明
host 字串 MySQL伺服器位址(如果是本地,用localhost)
port 數字 MySQL伺服器連接埠(一般為3306)
user 字串 MySQL使用者
password 字串 MySQL使用者密碼
db 字串 資料庫名  (=conn.select_db(‘資料庫名‘))
charset 字串 字元集類型
其他 字串  
     

資料庫操作:

1,使用cursor.execute()執行SQL語句

  幾乎支援所有能在MySQL上用的SQL語句,只要把SQL語句賦給cursor.execute()的參數即可。

  選擇資料庫:

    conn.select_db(‘test‘)

  建立資料庫表:   

    create_table_area="CREATE TABLE `area` (\
      `area_id` bigint(20) NOT NULL AUTO_INCREMENT,\
      `name` varchar(255) NOT NULL,\
      PRIMARY KEY (`area_id`)\
      )"
cursor.execute(create_table_area)

  插入單條資料:

    sql = "insert into area (area_id,name) values(1,‘Tim‘)"
    cursor.execute(sql)

  插入多條資料:

    insert_area="insert into area (area_id,name) values (%s,%s)"
    area_value=((1,‘CN‘),(2,‘AU‘),(3,‘HK‘),(4,‘US‘))
    cursor.executemany(insert_area,area_value)    

 

2,使用cursor.fetch*()擷取並處理資料(首先要擷取資料)

  sql = "select * from area"
  cursor.execute(sql)

    cursor.rowcout  #擷取到本地的資料行數

    cursor.fetchone() #第一條資料

    cursor.fetchmany(3)  #剩下的3條資料

    cursor.fetchall() #剩下的所有資料(當以上的fetch*()都不執行時,執行cursor.fetchall()會得到表中的所有資料)

import MySQLdbtry:    conn = MySQLdb.connect(                           host=‘192.168.10.128‘,                           user=‘root‘,                           passwd=‘123456‘,                           port=3306,                           charset=‘utf8‘)    cursor = conn.cursor()    conn.select_db(‘test‘)    sql = "select * from area"    cursor.execute(sql)    print cursor.rowcount    ts = cursor.fetchone()    print ts    ts = cursor.fetchmany(3)    print ts    ts = cursor.fetchall()    print tsexcept Exception as e:    conn.rollback()    print econn.commit()cursor.close()conn.close()

輸出結果:(1L,2L,u‘Tim‘,u‘SS‘這些值的後面前面的L和u只表示資料類型長整型字元型)

5      #rowcount(1L, u‘Tim‘)  #fetchone()((2L, u‘Tim‘), (3L, u‘SS‘), (4L, u‘SS‘))   #fetchmany(3)((5L, u‘SS‘),)   #fetchall()

3,用cursor.fetchall()取得資料庫表名和欄位名

import MySQLdbtry:    conn = MySQLdb.connect(                           host=‘192.168.10.128‘,                           user=‘root‘,                           passwd=‘123456‘,                           port=3306,                           charset=‘utf8‘)    cursor = conn.cursor()    conn.select_db(‘test‘)    sql = "show tables"    cursor.execute(sql)    ts = cursor.fetchall()    print ts        sql = "select * from area"    cursor.execute(sql)    tm = cursor.fetchall()    print tmexcept Exception as e:    conn.rollback()    print econn.commit()cursor.close()conn.close()

輸出結果:結果是一個tuple

((u‘area‘,), (u‘student‘,))((1L, u‘Tim‘), (2L, u‘Tim‘), (3L, u‘SS‘), (4L, u‘SS‘), (5L, u‘SS‘))

4,用把取得的值用Dict來儲存.獲得cursor的方式稍微不同:cursorDict = conn.cursor(MySQLdb.cursors.DictCursor)。

DictCursor的這個功能是繼承於CursorDictRowsMixIn,這個MixIn提供了3個額外的方法: fetchoneDict、fetchmanyDict、fetchallDict

import MySQLdbfrom MySQLdb.cursors import CursorDictRowsMixIntry:    conn = MySQLdb.connect(                           host=‘192.168.10.128‘,                           user=‘root‘,                           passwd=‘123456‘,                           port=3306,                           charset=‘utf8‘)    cursor = conn.cursor()    cursorDict = conn.cursor(MySQLdb.cursors.DictCursor)    conn.select_db(‘test‘)        cursorDict.execute("select * from area")    tm = cursorDict.fetchall()    print tm    cursorDict.execute("select * from area")        tm = cursorDict.fetchallDict()    print tm        cursor.execute("select * from area")    tm = cursor.fetchall()    print tmexcept Exception as e:    conn.rollback()    print econn.commit()cursor.close()conn.close()

輸出結果:結果雖然也是個tuple,但是裡面還有Dict

({‘area_id‘: 1L, ‘name‘: u‘Tim‘}, {‘area_id‘: 2L, ‘name‘: u‘Tim‘}, {‘area_id‘: 3L, ‘name‘: u‘SS‘}, {‘area_id‘: 4L, ‘name‘: u‘SS‘}, {‘area_id‘: 5L, ‘name‘: u‘SS‘})({‘area_id‘: 1L, ‘name‘: u‘Tim‘}, {‘area_id‘: 2L, ‘name‘: u‘Tim‘}, {‘area_id‘: 3L, ‘name‘: u‘SS‘}, {‘area_id‘: 4L, ‘name‘: u‘SS‘}, {‘area_id‘: 5L, ‘name‘: u‘SS‘})((1L, u‘Tim‘), (2L, u‘Tim‘), (3L, u‘SS‘), (4L, u‘SS‘), (5L, u‘SS‘))

 

python MySQLdb使用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.