一、新建表
我没有关闭数据库连接,代码如下:
import pymysql db=pymysql.connect( #创建连接mysql host='localhost', #自己电脑的ip地址 user='root', passwd='', database="runoob_db" #连接名为runoob_db的数据库 ) print(db) cursor = db.cursor() # 使用 execute() 方法执行 SQL,如果表存在则删除 cursor.execute("DROP TABLE IF EXISTS 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) # 关闭数据库连接 #db.close()
二、插入数据
import mysql.connector db=mysql.connector.connect( #创建连接mysql host='localhost', #自己电脑的ip地址 user='root', passwd='', database="runoob_db" #连接名为runoob_db的数据库 ) print(db) cursor = db.cursor() # 使用 execute() 方法执行 SQL,如果表存在则删除 cursor.execute("DROP TABLE IF EXISTS 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 插入语句 sql1 = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('Mac', 'Mohan', 20, 'M', 2000)""" try: # 执行sql语句 cursor.execute(sql1) # 提交到数据库执行 db.commit() except: # 如果发生错误则回滚 db.rollback()
同时sql1也能写成这样:
sql1 = "INSERT INTO EMPLOYEE(FIRST_NAME, \ LAST_NAME, AGE, SEX, INCOME) \ VALUES ('%s', '%s', %s, '%s', %s)" % \ ('Mac', 'Mohan', 20, 'M', 2000)
# SQL 插入语句 sql1 = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('Mac', 'Mohan', 20, 'M', 2000) """ sql2="""INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('ff', 'Mohan', 20, 'M', 2000) """ try: # 执行sql语句 cursor.execute(sql1) cursor.execute(sql2) # 提交到数据库执行 db.commit() except: # 如果发生错误则回滚 db.rollback()

三、查询操作
# SQL 查询语句 sql = "SELECT * FROM EMPLOYEE \ WHERE INCOME > %s" % (1000) try: # 执行SQL语句 cursor.execute(sql) # 获取所有记录列表 results = cursor.fetchall() 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=%s,sex=%s,income=%s" % \ (fname, lname, age, sex, income )) except: print ("Error: unable to fetch data")
四、更新操作
将age修改为23,代码如下:
# SQL 更新语句 sql3 = "UPDATE EMPLOYEE SET AGE = 23 WHERE SEX = '%c'" % ('M') try: # 执行SQL语句 cursor.execute(sql3) # 提交到数据库执行 db.commit() except: # 发生错误时回滚 db.rollback()
五、删除操作
删除数据表 EMPLOYEE 中 INCOME 小于 2000 的所有数据:
# SQL 删除语句 sql4 = "DELETE FROM EMPLOYEE WHERE INCOME <= %s" % (2000) try: # 执行SQL语句 cursor.execute(sql4) # 提交修改 db.commit() except: # 发生错误时回滚 db.rollback()
六、执行事务
import pymysql db=pymysql.connect( #创建连接mysql host='localhost', #自己电脑的ip地址 user='root', passwd='', database="runoob_db" #连接名为runoob_db的数据库 ) print(db) cursor = db.cursor() # 使用 execute() 方法执行 SQL,如果表存在则删除 cursor.execute("DROP TABLE IF EXISTS 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 插入语句 sql1 = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('Mac', 'Mohan', 20, 'M', 2000) """ sql2="""INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('ff', 'Mohan', 20, 'M', 2001) """ try: # 执行sql语句 cursor.execute(sql1) cursor.execute(sql2) # 提交到数据库执行 db.commit() except: # 如果发生错误则回滚 db.rollback() # SQL 查询语句 sql = "SELECT * FROM EMPLOYEE \ WHERE INCOME > %s" % (1000) try: # 执行SQL语句 cursor.execute(sql) # 获取所有记录列表 results = cursor.fetchall() 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=%s,sex=%s,income=%s" % \ (fname, lname, age, sex, income )) except: print ("Error: unable to fetch data") # SQL 更新语句 sql3 = "UPDATE EMPLOYEE SET AGE = 23 WHERE SEX = '%c'" % ('M') try: # 执行SQL语句 cursor.execute(sql3) # 提交到数据库执行 db.commit() except: # 发生错误时回滚 db.rollback() # SQL 删除语句 sql4 = "DELETE FROM EMPLOYEE WHERE INCOME <= %s" % (2000) try: # 执行SQL语句 cursor.execute(sql4) # 提交修改 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭数据库连接 #db.close()
注意:
找到代码要一直往下写的原因,是因为开头代码有一句删除employee表导致。因此重点掌握各个操作语句,mysql.connector同样适用这些语句,只用在开头改一下模块名即可。
import mysql.connector db=mysql.connector.connect( #创建连接mysql host='localhost', #自己电脑的ip地址 user='root', passwd='', database="runoob_db" #连接名为runoob_db的数据库 )
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201535.html原文链接:https://javaforall.net
