我用的是Python3.7.x(python版本) + Navicat(数据库可视化工具)
我们要用到pymysql模块,也很好安装,进入命令行,输入pip install pymysql就行了,如果出现了版本问题、权限问题等请自行百度,本文的重点不在这里。
ok,有了pymysql模块之后我们就可以尝试与数据库建立链接啦。
整个操作分为三步,
1.首先要和数据库建立连接(仅仅是连接起来,还不能实现具体操作)
import pymysql
con = pymysql.connect(
host = 'localhost',
port = 3306,
user = 'root',
password = 'usbw',
db = 'test',
charset = 'utf8'
)
详细说一下代码,导入模块之后调用connect函数来建立连接。
介绍一下所有参数
- host : 主机地址或者IP
- port : 端口号
- user : 用户名,一般都是root
- password : 密码
- db : 数据库名字,就是你建立过的数据库的名字,我们是要在这个数据库的目录下进行各种操作
- charset : 编码格式,一般都选utf8,毕竟通用嘛
获取游标
cur = con.cursor()
获取游标之后你就可以进行各种操作了
进行操作
我们用cur.execute(sql)来执行sql命令,其中sql是一个字符串,内容就是你要执行的命令,要注意的一点是,除了建表操作外,我们执行的sql命令需要再同步到数据库中,需要用到commit()函数,如果不使用的话你会发现这些命令都执行了,但是就是不在数据库中反映出来。
具体操作就是这样:
sql = "delete from co where iid = 1"
cur.execute(sql)
con.commit()
这样下来就可以实现与数据库的交互了,但是仅仅是实现了,还不够完美,容错性太差,如果输入的sql命令语法有误,那可就不好玩了。
所以要改进一下,用try…except…finally机制来处理一下,也用到了rollback()函数来回退,但是只可以回退DML,没法回退DDL,(数据库的DDL和DML),最后还要记得关闭游标和连接:
import pymysql
con = pymysql.connect(
host = 'localhost',
port = 3306,
user = 'root',
password = 'usbw',
db = 'test',
charset = 'utf8'
)
cur = con.cursor()
try:
#尝试创建表
cur.execute("create table co (iid int not null, namse char(30) not null, score int not null, primary key (iid))character set utf8;")
#尝试执行插入命令
cur.execute("insert into co (iid, namse, score) values (22, 'studeb', 19);")
#将命令真正同步到数据库中
con.commit()
#输出返回的信息,对于fetchall函数,如果没有返回信息的话,返回()
print(cur.fetchall())
except Exception as e:
#如果出错的话输出错误信息
print(e)
#并回退
con.rollback()
finally:
#关闭游标和连接
cur.close()
con.close()