python數據庫模塊MySQLdb

[root@foundation55 python]# yum install MySQL-python -y
[root@foundation55 python]# yum install mysql -y

[root@foundation55 python]# ipython
Python 2.7.5 (default, Feb 11 2014, 07:46:25)
Type "copyright", "credits" or "license" for more information.

IPython 0.13.1 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: import MySQLdb    #導入 python 的 mysqldb 模塊
 

In [2]: conn=MySQLdb.connect(user='root',passwd='password',host='127.0.0.1',charset='utf8')
 
###建立一個mysql 連接對象,在輸出中文時必須加上 charset='utf8',不然會出現中文亂碼

In [3]: cur=conn.cursor()
###conn 對象只是一個到 mysql 的連接狀態,需要通過遊標來發送 sql指令,我們需要建立一個遊標,並創建一個 cur 對象保存下來

In [4]: cur.execute('CREATE DATABASE testbase')
Out[4]: 1L
In [5]: cur.execute('USE testbase')
Out[5]: 0L


In [6]: conn.commit()   #提交事物才能插入數據,在 rhel6 上使用 mysql 不需要這步,rhel7 上不提交insert 失敗



###創建testuser表
In [11]: cur.execute('CREATE TABLE testuser(name VARCHAR(10) NOT NULL,passwd VARCHAR(10))')  
Out[11]: 0L

In [16]: cur.execute("INSERT INTO testuser VALUE('user1','user1')")    #插入數據
Out[16]: 1L
In [17]: cur.execute("INSERT INTO testuser VALUE('user2','user2')")      
Out[17]: 1L
In [18]: cur.execute("INSERT INTO testuser VALUE('user3','user3')")      
Out[18]: 1L
In [33]: cur.execute("INSERT INTO testuser VALUE('user7','user8')")   
Out[33]: 1L
In [35]: cur.execute("INSERT INTO testuser VALUE('user9','user10')")    
Out[35]: 1L
In [36]: cur.execute("INSERT INTO testuser VALUE('user11','user112')")
Out[36]: 1L


In [37]: cur.execute("SELECT * FROM testuser WHERE name LIKE 'user%'")    
Out[37]: 7L


####
In [38]: for data in cur.fetchall():
             print '%s\t%s' %data
   ....:     
user1    user1
user2    user2
user3    user3
user4    user5
user7    user8
user9    user10
user11    user112


In [39]: cur.execute("SELECT * FROM testuser")
Out[39]: 7L

#打印一條數據信息
In [40]: cur.fetchone()
Out[40]: (u'user1', u'user1')

In [41]: cur.fetchone()
Out[41]: (u'user2', u'user2')

In [42]: cur.fetchone()
Out[42]: (u'user3', u'user3')

In [43]: cur.fetchone()
Out[43]: (u'user4', u'user5')

In [44]: cur.fetchone()
Out[44]: (u'user7', u'user8')

In [45]: cur.fetchone()
Out[45]: (u'user9', u'user10')

In [46]: cur.fetchone()
Out[46]: (u'user11', u'user112')


###默認指針是一次遞進的,想回去需要通過 scroll 函數調整指針,第一個參數指移動的位置,第二個參數是在什麼地方移動

In [49]: cur.scroll(0,'absolute') #指針還原

In [50]: cur.execute("SELECT * FROM testuser")       #select 比較特殊,python 不能直接打印數據表
Out[50]: 7L

In [51]: cur.scroll(1,'absolute')

In [53]: cur.fetchone()
Out[53]: (u'user1', u'user1')

In [54]: cur.scroll(2,'absolute')

In [55]: cur.fetchone()
Out[55]: (u'user3', u'user3')

In [56]: cur.scroll(3,'absolute')

In [57]: cur.scroll(4,'absolute')

In [58]: cur.fetchone()
Out[58]: (u'user7', u'user8')

In [59]: cur.execute("SELECT * FROM testuser")
Out[59]: 7L

###一次取幾個值,指針也是會以此遞進
In [61]: cur.fetchmany(5)
Out[61]:
((u'user1', u'user1'),
 (u'user2', u'user2'),
 (u'user3', u'user3'),
 (u'user4', u'user5'),
 (u'user7', u'user8'))

In [62]: cur.fetchmany(7)
Out[62]: ((u'user9', u'user10'), (u'user11', u'user112'))

In [63]: cur.fetchmany(7)
Out[63]: ()

In [64]: cur.scroll(4,'absolute')

In [65]: cur.fetchmany(7)
Out[65]: ((u'user7', u'user8'), (u'user9', u'user10'), (u'user11', u'user112'))


#############################使用 executemany 函數一次插入多個值######################
In [78]: cur.execute("CREATE TABLE testuser1(name VARCHAR(10),passwd VARCHAR(10))")
Out[78]: 0L

In [89]: sql = "INSERT INTO testuser1(name,passwd) VALUE(%s,%s)" #爲了方便定義字符串變量 %s 是字符串的格式化方法

In [90]: cur.executemany(sql,[('lll','nine'),('www','eight')])   #通過 execute 函數發送 sql 指令,後面的值是個元組,我們可以通過交互式獲取元組的值
Out[90]: 2L

In [91]: cur.executemany(sql,[('lll','nine'),('www','eight'),('eee','seven')]) #使用 executemany 函數一次插入多個值,以列表方式
Out[91]: 3L

###刪除數據
In [95]: cur.execute('DELETE FROM testuser1 WHERE name="lll"')   
Out[95]: 2L

###刪除testuaer表
In [96]: cur.execute("DROP TABLE testuser")
Out[96]: 0L


###關閉遊標
Out[97]: cur.close()

In [6]: conn.commit()   

###關閉連接
Out[98]: conn.close()




mysql打印輸出:
#!/usr/bin/python
import MySQLdb
conn = MySQLdb.connect(host='localhost',user='root',passwd='password',db='testbase',charset='utf8')
cur = conn.cursor()
result = cur.fetchmany(cur.execute('select * from testuser'))

for rec in result:

     print rec[0], rec[1], rec[2]


cur.close()
conn.close()

發佈了33 篇原創文章 · 獲贊 15 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章