python鏈接mysql以及常用語法
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 inset (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 使得表支持中文,否則默認為Latin1 10 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以及常用語法