首先要明確一點,我們在Python中需要通過第三方庫才能訪問Mysql。
有這樣幾種方式:Mysql-python(即MySQLdb)、pymysql、mysql-connector。Mysql-python是用C寫的,速度最快,而后兩者是用純python寫的,相對來說速度慢一點。可惜的是Mysql-python只支持到python 2.7,對python 3.X都沒有支持。如果你用的是python3,就用不了Mysql-python了。本文章使用的是python 3.4,用的第三方庫是pymysql。
Pymysql的安裝
安裝好pip之后。在CMD中輸入命令pip install pymysql即可安裝。有關於pip的安裝和使用請自行百度。
安裝好pymysql后,其使用跟一般的第三方庫一樣,需要事先import,下面我直接給一個例子,大家可以從IDLE中實驗。
>>> import pymysql >>> conn=pymysql.connect(host='localhost',user='root',passwd='password',charset='utf8',port=3306) #port一般都是3306,charset要寫utf8,不然可能會出現亂碼 >>> cur=conn.cursor() #查看有哪些數據庫 >>> cur.execute('show databases') >>> databases=[] >>> for i in cur: databases.append(i) >>> databases [('information_schema',), ('firstdb',), ('hive',), ('jeesite',), ('mysql',), ('school',), ('test',), ('test1',), ('test2015',)] #選擇數據庫 >>> conn.select_db('test') #如果一開始就知道選什么數據庫,可以把數據庫參數加到connect的語句里: #conn=pymysql.connect(host='localhost',user='root',passwd='password',db='test',charset='utf8',port=3306) #查看有哪些表 >>> cur.execute('show tables') #fetchall是獲得所有的查詢結果 >>> tables_list=cur.fetchall() >>> tables_list (('user',), ('user2',), ('user3',), ('user4',), ('user5',), ('user6',), ('user7',)) #創建table >>> cur.execute('create table user8(id varchar(10),name varchar(10))') #如果習慣於每一個colmn單獨一行,可以用'''代替' >>> cur.execute('''create table user8(id varchar(10), name varchar(10))''') #查看表user,execute中的語句語法跟mysql中的一樣 >>> cur.execute('select * from user') >>> user_select_result=cur.fetchall() >>> user_select_result (('1', 'Michael'), ('11', 'ozil'), ('12', 'Giroud'), ('2', 'Henry'), ('Alexis', '17'), ('Ramsey', '16'), ('Walcott', '14')) >>> cur.execute('select * from user') #fetchone只獲得第一條查詢結果 >>> user_select_result=cur.fetchone() >>> user_select_result ('1', 'Michael') >>> cur.execute('select * from user') #fetchmany(n),可以獲得n條查詢結果 >>> user_select_result=cur.fetchmany(4) >>> user_select_result (('1', 'Michael'), ('11', 'ozil'), ('12', 'Giroud'), ('2', 'Henry')) #插入數據,注意插入語句的插入參數一定要是變量,不能是直接一個set >>> insert_value=('3','gibbs') >>> cur.execute('insert into user(id,name) values(%s,%s)',insert_value) >>> cur.execute('select * from user') >>> user_select_result=cur.fetchall() >>> user_select_result (('1', 'Michael'), ('11', 'ozil'), ('12', 'Giroud'), ('2', 'Henry'), ('3', 'gibbs'), ('Alexis', '17'), ('Ramsey', '16'), ('Walcott', '14')) insert_value_list=[('22','debucy'),('33','cech')] #插入多條數據,需要用executemany >>> cur.executemany('insert into user(id,name) values(%s,%s)',insert_value_list) >>> cur.execute('select * from user') >>> user_select_result=cur.fetchall() >>> user_select_result (('1', 'Michael'), ('11', 'ozil'), ('12', 'Giroud'), ('2', 'Henry'), ('22', 'debucy'), ('3', 'gibbs'), ('33', 'cech'), ('Alexis', '17'), ('Ramsey', '16'), ('Walcott', '14')) #只有conn.commit()后,對數據庫的修改才會提交 >>> conn.commit() >>> cur.execute('update user set name="Ozil" where id="11"') >>> user_select_result=cur.fetchall() >>> user_select_result () >>> cur.execute('select * from user') >>> user_select_result=cur.fetchall() >>> user_select_result (('1', 'Michael'), ('11', 'Ozil'), ('12', 'Giroud'), ('2', 'Henry'), ('22', 'debucy'), ('3', 'gibbs'), ('33', 'cech'), ('Alexis', '17'), ('Ramsey', '16'), ('Walcott', '14')) #修改后一定要comiit,不然刪除、更新、添加的數據都不會被寫進數據庫中。 >>> conn.commit() #最后要把cur和conn都關掉 >>> cur.close() >>> conn.close()