linux下使用名mysql資料庫程式設計

2021-06-25 23:50:20 字數 2941 閱讀 9373

1介面

import mysqldb

2.鏈結資料庫

conn  = mysqldb.connect()

3、獲取資料庫指標

因該模組底層其實是呼叫c api的,所以,需要先得到當前指向資料庫的指標:

cur =   conn.cursor()

4、獲取資料庫資訊(select)

先使用指標物件執行sql語句:

cur.execute('select * from tables')

其返回值為sql語句得到的行數,如:2l,表示2行。

然後,可以從該物件的fetchone或fetchall方法得到行資訊。

5、獲取行資訊

指標物件的fetchone()方法,是每次得到一行的tuple返回值:

引用》 row=cur.fetchone()

>>> print row

('user1', '52c69e3a57331081823331c4e69d3f2e', 1000l, 1000l, '/home/ftp/user1', '')

指標物件的fetchall()方法,是得到一組tuple,其內容為由行資訊組成的tuple值:

引用》 cur.scroll(0,'absolute')

>>> row=cur.fetchall()

>>> print row

(('user1', '52c69e3a57331081823331c4e69d3f2e', 1000l, 1000l, '/home/ftp/user1', ''), ('user2', '7e58d63b60197ceb55a1c487989a3720', 1000l, 1000l, '/home/ftp/user2', none))

6、移動指標

當使用fetchone()方法是,指標是會發生移動的。所以,若不重置指標,那麼使用fetchall的資訊將只會包含指標後面的行內容。

手動移動指標使用:

cur.scroll(int,parm)

含義為:

引用int:移動的行數,整數;在相對模式下,正數向下移動,負值表示向上移動。

parm:移動的模式,預設是relative,相對模式;可接受absoulte,絕對模式。

※實際上,我覺得應該盡量避免移動指標;而應從select語句得到全部結果後,交給python處理tuple,比較方便。但我們應該明白該指標的含義。

7、修改資料

修改資料,包括插入、更新、刪除。它們都是使用指標物件的execute()方法執行:

cur.execute("insert  into table (row1, row2) values ('111', '222')")

cur.execute("update  table set   row1 = 'test'  where  row2 = 'row2' ")

cur.execute("delete from  table  where row1 = 'row1' ")

因單引號「'」用於sql語句中的標識,所以,python中的字串需使用雙引號括住。

此外,也可以使用python的「格式化字串」寫法,簡化命令,例如:

cur.execute("update  table set   row1 = '%s'  where  row2 = '%s' " %('value1','value2'))

※請注意,'%s'的單引號是sql語句的間隔符,'value1'的單引號是python的字串間隔符,其含義是不同的。是否需要間隔符,以及使用雙引號還是單引號作為間隔,需根據其含義決定。例如,還有:

cur.execute("update ftpusers set passwd=%s where userid='%s' " %("md5('123')",'user2'))

這裡,paswd=%s是因sql的md5()函式是不需要單引號間隔的;"md5('123')"是python的字串中含有單引號,所以用雙引號括住。

8、提交修改

一般情況下,mysqldb模組會自動提交修改。但我們在更新資料後,手動執行一次:

conn.commit()

#coding=utf-8

import mysqldb

#!/usr/bin/env python

conn = mysqldb.connect(user = 'root', passwd='', host = '127.0.0.1') #連線資料庫

#conn = mysqldb.connect(user = 'root', passwd='', host = '127.0.0.1')

#conn = mysqldb.connect(user = 'root', passwd = '', host = '127,0,0,1')

cur = conn.cursor() #獲取資料庫指標

conn.select_db('aaa') #選擇資料庫

cur.execute("insert into test values(100, 'aaa','n')") #對資料庫表插入操作

cur.execute("update test set name = 'bbb' where id = 100") #對資料庫表更新操作

cur.execute("select * from test where id = 100") #對資料庫表查詢操作

#cur.execute("delete from test where id = 100") #對資料庫表刪除操作

cur.scroll(1,'absolute') #指標移動

g = cur.fetchall()

for x in g:

print x

conn.commit() #執行修改

cur.close()

conn.close()

Linux下MySQL預設對錶名區分大小寫

有個專案部署到伺服器上,日誌裡老是提示找不到表。原來linux下mysql預設對錶名區分大小寫。解決方法 一 規範 表名全部大寫 二 修改mysql配置,使表名全部自動轉為小寫。1.用root登入,修改 etc my.cnf 2.在 mysqld 下加入一行 lower case table nam...

Linux 下使用mysql 報錯!!

bash mysql command not found 原因 這是由於系統缺省會查詢 usr bin下的命令,如果這個命令不在這個目錄下,當然會找不到命令,我們需要做的就是對映乙個鏈結到 usr bin目錄下,相當於建立乙個鏈結檔案。首先得知道mysql命令或mysqladmin命令的完整路徑,比...

Linux下的MYSQL使用

首先,安裝mysql client和mysql server。1 以管理員身份進入mysql資料庫 mysql u root p 2 建立資料庫 create database 資料庫名 注意一定要寫上分號 3 顯示已有的資料庫 show datatbase 4 刪除資料庫 drop databas...