实现MySQL与python的交互有以下的步骤
1:在MySQL下查看
- 先登录数据库管理系统,确保此数据库名存在
(没有则创建)。创建后use+数据库名进入数据库
zyf@zrong:~$ mysql -u root -p
mysql> create database test;
Query OK, 1 row affected (0.00 sec)
mysql> use test
Database changed
mysql>
2: 进入python,先进行简单的操作
导入第三方模块pymysql
a 连接数据库
b 获取游标:用来执行sql语句
c 进行sql语句的一些操作(增删改查等)
import pymysql
#1:链接数据库
#参数:mysql服务器地址,用户名,密码,数据库名
#注意:先登录数据库,在数据库中必须存在一个名为testdb的数据库
db = pymysql.connect("localhost","用户名","密码","test");
#2.获取一个游标
#游标的作用:执行sql中的语句,通过游标完成的
cur = db.cursor();
#3.其他操作
"""
#1.
#查看当前数据库的版本信息
cur.execute("select version()")
#获取游标中的一条信息
data = cur.fetchone()/fetchall()
print(data)
"""
#2.创建表
cur.execute("DROP TABLE IF EXISTS student")
sql = """create table student(
id int primary key,
name varchar(20) not null,
score double default 0
);"""
cur.execute(sql)
为了方便,将这些操作封装成一个工具类
建一个工具py文件
import pymysql
class DBwork(object):
#构造函数
def __init__(self,host,user,psd,dbname):
self.host=host
self.user=user
self.psd=psd
self.dbname= dbname
#创建实现sql语句各种操作的功能函数
def connect(self):
self.db=pymysql.connect(self.host,self.user,self.psd,self.dbname)
self.cur=self.db.cursor()
def createTable(self,sql):
self.connect()
self.cur.execute(sql)
self.db.close()
#DML的操作用MySQL事务来管理 所以再创一个函数来捕获异常
def edit(self,sql):
try:
self.connect()
self.cur.execute(sql)
self.db.commit()
self.db.close()
except:
self.db.rollback()
def insertData(self,sql):
self.edit(sql)
def deleteData(self,sql):
self.edit(sql)
def updateData(self,sql):
self.edit(sql)
#查询数据
def fetchDataOne(self,sql):
self.connect()
self.cur.execute(sql)
res=self.cur.fetchone()
self.db.close()
return res
def fetchAll(self,sql):
self.connect()
self.cur.execute(sql)
res=self.cur.fetchall()
self.db.close()
return res
再建一个测试文件
from aaa import DBwork
#创建对象
tool=DBwork("localhost","root","rock1204","test")
#执行行为
# sql="""create table user(
# id int(10) primary key,
# name varchar(10) unique,
# addr varchar(30) default "北京"
# );"""
# tool.createTable(sql)
sql2="""insert into user(id,name,addr) values(107,"zaqq","长沙");"""
tool.insertData(sql2)
到MySQL里去
ok!