今天是读《python数据分析基础》的第11天,今天的读书笔记的内容为通过MysqlcCient模块来使用mysql数据库。
mysqlcilent介绍
mysql与python连接的包名为mysql-python, 不过在python3.x中这个包的名字为mysqlclient,调用时包的名称则为MySQLdb。
使用方式与sqlite3类似,先链接数据库,再创建游标,通过cursor.execute()执行sql语句,再通过connection.commit()提交事务。
注:
1.进行以下操作时,必须确保mysql服务已经开启。
2.下文操作所涉及的数据库pydatabase已实现通过mysql生成。
创建数据表
import MySQLdb
#连接mysql数据库
con=MySQLdb.connect(host='localhost',port=3306,db='pydatabase',user='user',passwd='pass')
#生成游标
cur=con.cursor()
#创建表
cur.execute('CREATE TABLE IF NOT EXISTS test(ID long,text varchar(20),score float)')
#关闭游标及数据库连接
cur.close()
con.close()
插入数据
import MySQLdb
#连接mysql数据库
con=MySQLdb.connect(host='localhost',port=3306,db='pydatabase',user='user',passwd='pass')
#生成游标
cur=con.cursor()
#插入数据
data=[(1,'a',12.5),(2,'b',10.3),(3,'c',11.0)]
for row in data:
cur.execute('INSERT INTO test VALUES(%s,%s,%s);',row)
con.commit()
#关闭游标及数据库连接
cur.close()
con.close()
选取数据
import MySQLdb
#连接mysql数据库
con=MySQLdb.connect(host='localhost',port=3306,db='pydatabase',user='user',passwd='pass')
#生成游标
cur=con.cursor()
#选取数据
cur.execute('SELECT * FROM test;')
rows=cur.fetchall()
for row in rows:
print(row)
#关闭游标及数据库连接
cur.close()
con.close()
修改数据
import MySQLdb
#连接mysql数据库
con=MySQLdb.connect(host='localhost',port=3306,db='pydatabase',user='user',passwd='pass')
#生成游标
cur=con.cursor()
#更新数据
cur.execute('UPDATE test SET score=score+1.0;')
con.commit()
#关闭游标及数据库连接
cur.close()
con.close()
删除数据
import MySQLdb
#连接mysql数据库
con=MySQLdb.connect(host='localhost',port=3306,db='pydatabase',user='user',passwd='pass')
#生成游标
cur=con.cursor()
#删除数据
cur.execute('DELETE FROM test;')
#关闭游标及数据库连接
cur.close()
con.close()
删除表
import MySQLdb
#连接mysql数据库
con=MySQLdb.connect(host='localhost',port=3306,db='pydatabase',user='user',passwd='pass')
#生成游标
cur=con.cursor()
#删除表
cur.execute('DROP TABLE test;')
#关闭游标及数据库连接
cur.close()
con.close()