利用Python訪問Mysql數據庫


  首先要明確一點,我們在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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM