1,环境介绍
要求:使用数据库TESTDB.EMPLOYMENT
EMPLOYEE表字段为 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。
2,基本用法:
import pymysql # 打开数据库连接,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 import pymysql # 打开数据库连接,创建游标,开头启动数据库都是这一套,先链接数据库再设置游标 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 查
import pymysql 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 in results: 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,改
import pymysql 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,删
import pymysql 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()