python連結mysql以及常用文法

來源:互聯網
上載者:User

標籤:資料資訊   ble   輸出   cursor   close   date   插入資料   無法   ack   

MySQL是一個關係型資料庫管理系統 ,其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站資料庫。在使用過程中不總是和它打交道,導致使用時候都得查看具體的文法。下面為大家稍作總結一些常用到的(雖然常用的都背的溜溜的~)

在python3中使用mysql首先匯入pymysql模組,沒有這個模組的可以進行pip安裝,要是mysql也沒有的話,,參考http://www.cnblogs.com/xsmile/p/7753984.html進行安裝。

進入mysql中,查看當前的含有的資料庫都有哪些:

mysql -h localhost -u root -p    輸入密碼進入mysql環境。

show databses;  #顯示當前資料庫列表

show tables;  #顯示當前資料庫中包含的所有表

show create table table_name;  #查看錶結構

alter table old_name rename to new_name  #修改資料表名

alter table table_name rename column old_column_name to new_column_name  #修改列名

alter tale table_name modify column_name new_type  #修改列的資料類型

alter table table_name add column_name datatype  #插入列

alter rable table_name drop column column_name  刪除列

要在dos視窗操作資料庫,先選擇一個資料庫,才能進行對其當中的表進行操作。即  use db_name;

我以test 資料庫中 blog_test表操作為例:

 1 mysql> use test; 2 Database changed 3 mysql> select * from blog_test;

之後螢幕輸出:

+----------+-----------------+--------+| username | email           | gender |+----------+-----------------+--------+| charles  | [email protected] | male   || jerry    | [email protected]    | female || xsmile   | [email protected]  | male   |+----------+-----------------+--------+3 rows in set (0.03 sec)

當然重點在python中對mysql的操作,基本分為:

1、匯入pymysql ;  2、連結到某個資料庫;  3、建立遊標;  4、要操作的文法。

在資料庫中建立表:

 1 import pymysql  #匯入包 2 db=pymysql.connect(host=‘localhost‘,user=‘root‘,passwd=‘123456‘,db=‘test‘)  #連結資料庫 3 cursor=db.cursor()  #建立遊標,對錶進行操作 4 cursor.execute("drop table if EXISTS blog_test")  #如存在blog_test表,則刪除 5 cursor.execute("create table blog_test(  6 username char (20) , 7 email CHAR (20) NOT NULL , 8 gender CHAR (6) NOT NULL, 9 PRIMARY key(username))charset=utf8")  #charset=utf8 使得表支援中文,否則預設為Latin110 cursor.close()11 db.commit()12 db.close()

建立一個空表也沒什麼用啊,裡面有內容才有價值,才有使用的意義啊。

資料庫中插入資料。

1 cursor.execute("insert into blog_test(username,email,gender) values(‘xsmile‘,‘[email protected]‘,‘male‘)")

很生動形象的語句,和mysql中文法簡直一樣。以後學到sqlalchemy 這個模組時就會方便很多了~,資料庫中插入多條語句時用多條insert 語句。這裡我們在代碼中就有簡潔的方法,對要插入的內容建立列表,就完成了多條插入。

1 ins="insert into blog_test VALUES (%s,%s,%s)"2 datas=[ (‘charles‘,‘[email protected]‘,‘male‘),(‘jerry‘,‘[email protected]‘,‘female‘),]3 cursor.executemany(ins,datas)

插入這裡用的是:cursor.executemany() ,不過有個小提示,下面有 db.commit() 才可以實現插入到表中。不然雖無錯誤,但插不到表中。

先進行查詢看看錶中資料

1 import pymysql  #匯入模組2 db=pymysql.connect(host=‘localhost‘,user=‘root‘,passwd=‘123456‘,db=‘test‘)  #連結到資料庫3 cursor=db.cursor()  #建立遊標對錶進行相關操作4 li=cursor.execute("select * from blog_test")  #對錶進行查詢5 print(li)6 cursor.close()  #關閉遊標7 db.close()  #斷開資料庫

這時我們發現輸出的結果是一個數字 3,什麼情況,查看資料庫表即blog_test看到當中有3條資料。原來如此,那我們想顯示那3條資料怎麼辦呢?!

當然是迴圈了,依次對錶中元組輸出。

1 info=cursor.fetchmany(li)2 for item in info:3     print(item)

還有cursor.fetchone() ,表示從中取一條資料。取其中元組時還有cursor.fetchall(), 不需要參數,取得的資料為遊標當前位置到資料末尾的全部資料。在進行條件查詢時可以加入where條件,語句和mysql中方法是一樣的。

上面提到的有查詢和插入,接下來看看更改操作。

1 cursor.execute("update blog_test set username=‘sofia‘ where email=‘[email protected]‘")

注意在查詢欄位中引號的使用,不能缺少。

刪除操作的話想必大家都知道了,把mysql語句放在cursor.execute()中,即可完成相關操作。那我們把剛才更改的那行資料進行刪除。

1 cursor.execute("delete from blog_test where username=‘sofia‘")

之後再查詢blog_test表,名為sofia的資料資訊就刪除了。當然要刪除整個表的話,就使用drop語句了,三思後行這個操作,不然你就是刪庫到跑路的那個人~

刪除以及開啟事務及復原

在進行插入、更改,刪除(delete)操作時,可以事先開啟事務,這樣當出錯或返回時只需rollback復原下就恢複為原來的資料了(在pycharme中預設開啟事務,但最後還有commit(),這樣程式執行後,也是無法彌補的)。例如:

 1 mysql> select * from b;  #查看b表資料 2 +------+ 3 | b    | 4 +------+ 5 |    4 | 6 |    5 | 7 |    6 | 8 |    7 | 9 +------+10 4 rows in set (0.00 sec)11 12 mysql> begin;  #開啟事務13 Query OK, 0 rows affected (0.00 sec)14 15 mysql> delete from b where b=5;  #把為5的元組刪除16 Query OK, 1 row affected (0.05 sec)17 18 mysql> select * from b;19 +------+20 | b    |21 +------+22 |    4 |23 |    6 |24 |    7 |25 +------+26 3 rows in set (0.00 sec)27 28 mysql> rollback;  #復原29 Query OK, 0 rows affected (0.11 sec)30 31 mysql> select * from b;32 +------+33 | b    |34 +------+35 |    4 |36 |    5 |37 |    6 |38 |    7 |39 +------+40 4 rows in set (0.00 sec)

但是drop(將表格直接刪除,沒有辦法找回)、以及truncate(刪除表中的所有資料,不能與where一起使用)刪除時復原也挽回不了刪除的資料。

 

原創不易,尊重著作權。轉載請註明出處:http://www.cnblogs.com/xsmile/

python連結mysql以及常用文法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.