本人用的是ubuntu系统下虚拟环境的python3,故要先进到虚拟环境再下载pymysql。先用workon查看虚拟环境叫什么?再进入用pip下载。python
进入后输入命令行:pip3 install pymysql,若是提示须要升级pip版本,按照其指定命令输入便可。若是你用的是ubuntu下的python,就不须要进入虚拟环境就能够直接pip安装。mysql
安装完成后,在cd到下图的指定文件下,使用sudo打开文件输入密码,最后修改指定部分。sql
将bind-address的127.0.0.1改成0.0.0.0,IP地址127.0.0.1是只有本地才能链接,0.0.0.0是全部的ip都能访问。数据库
首先导包ubuntu
import pymysql
再创建和数据库的链接,配置pymysql.connect链接数据库。mysql的端口号是3306.fetch
con = pymysql.connect( host = '127.0.0.1', port = 3306, user = 'wanglong', password = '12580', db = 'mydb', #数据库名 charset = 'utf8')
再定义游标,以后利用python操做数据库的语句都是基于这个游标。命令行
cur = con.cursor()
利用execute执行MySQL语句3d
a = cur.execute('show tables') print (a)
上面的结果是6,返回的表格的数目。进入数据库执行相应语句效果以下:code
若是想输出上图的具体数据,就要用fetchone或fetchall来提取数据。blog
cur.execute('show tables') d = cur.fetchone() f = cur.fetchall() print (d) print (*f)#拆包
('choose',) ('col',) ('course',) ('stu',) ('stu_for',) ('test',)
能够发现,再取出全部数据时,其第一条数据并无取出,缘由是在取出全部数据前实行了取出一条数据的命令。
我还能够建一张新表,以下所示:
tb = ''' create table test( id int primary key auto_increment, name varchar(20) ) ''' cur.execute(tb)
须要注意的是,当咱们利用execute语句执行mysql的插入、删除、更新时,它会自定开启一个事务,故若是不提交这个事务而运行,底层数据不会有任何改变。提交事务有两种方法,一种是原始的mysql语句,一种是pymysql模块内的方法。
cur.exectue('commit')
con.commit()
最后要注意的是,在全部操做完成以后要先关闭游标,再关闭链接。
cur.close() con.close()