1,环境介绍
要求:使用数据库TESTDB.EMPLOYMENT
EMPLOYEE表字段为 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。
2,基本用法:
importpymysql#打开数据库连接,4个参数依次是:本地数据库,数据库用户名,密码,数据库名
db = pymysql.connect("localhost","xxxx","xxxx","TESTDB")#使用 cursor() 方法创建一个游标对象 cursor
cursor =db.cursor()#使用 execute() 方法执行 SQL 查询
cursor.execute("SELECT VERSION()") #返回1#使用 fetchone() 方法获取单条数据.
data =cursor.fetchone()print ("Database version : %s" %data) #返回:DATABASE VERSION:5.7.23-0ubuntu0.16.04.1
#关闭数据库连接
db.close()
>import pymysql
>db=pymysql.connect("localhost","testuser","test123","TESTDB" ) #连接到数据库先
>cursor=db.cursor() #使用cursor方法创建一个游标对象cursor,目前不是很懂
>cursor.execute("drop table if exists EMPLOYEE") #execute()的参数直接就是sql语言,只是不用末尾加分号而已,由此可见,这果然是个接口包。ps:真的可以删掉EMPLOYEE!厉害了
>sql="""create table employee (FIRST_NAME CHAR(20) NOT NULL,LAST_NAME CHAR(20),AGE INT,SEX CHAR(1),INCOME FLOAT)"""
>cursor.execute(sql) #执行sql字符串代表的sql语言,创建一个table叫employee。 在命令行中执行的话,执行无误会返回0,
2,增
#!/usr/bin/python3
importpymysql#打开数据库连接,创建游标,开头启动数据库都是这一套,先链接数据库再设置游标
db = pymysql.connect("localhost","xxxx","xxxx","TESTDB")
cursor =db.cursor()#SQL 插入语句
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
LAST_NAME, AGE, SEX, INCOME)
VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
try:#执行sql语句,此处只是预执行,不会真正插入数据,但是如果可执行就返回1,后面用commit提交
cursor.execute(sql)#提交刚刚的插入请求到数据库执行
db.commit()except:#如果发生错误则回滚
db.rollback()#关闭数据库连接
db.close()
特殊说明:ROLLBACK指的是【回滚】,即是在事务的运行过程中,发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有的已完成的操作全部撤销,回滚到事务开始之前的状态。
3 查
importpymysql
db= pymysql.connect("localhost","xxxx","xxxx","TESTDB")
cursor=db.cursor()#SQL 查询语句
sql = "select * from employee where income >2000"
try:#模拟执行SQL语句
cursor.execute(sql) #返回2
#获取所有记录列表
results = cursor.fetchall() #真正的执行查询语句,此时results是:(('Mark', 'Twn', 50, 'M', 3000.0), ('lee', 'devin', 30, 'M', 4000.0))
#此处往下只是格式化提取results中的内容。
for row inresults:
fname=row[0]
lname= row[1]
age= row[2]
sex= row[3]
income= row[4]#打印结果
print ("fname=%s,lname=%s,age=%d,sex=%s,income=%d" %\
(fname, lname, age, sex, income ))except:print ("Error: unable to fetch data")#关闭数据库连接
db.close()
特殊说明:pymysql中使用fetchone()或者fetchall()语句来提交和处理查询请求
4,改
importpymysql
db= pymysql.connect("localhost","xxxx","xxxx","TESTDB")
cursor=db.cursor()#SQL 更新语句
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE INCOME >2000"
try:#执行SQL语句
cursor.execute(sql)#提交到数据库执行
db.commit()except:#发生错误时回滚
db.rollback()#关闭数据库连接
db.close()
5,删
importpymysql
db= pymysql.connect("localhost","xxxx","xxxx","TESTDB"cursor=db.cursor()#SQL 删除语句
sql = "DELETE FROM EMPLOYEE WHERE AGE > 40"
try:#执行SQL语句
cursor.execute(sql)#提交修改
db.commit()except:#发生错误时回滚
db.rollback()#关闭连接
db.close()