python_python连接至MySQL

PyMySQL

MySQL 可应用于多种语言,可以使用Python来连接和操作MySQL数据库


什么是 PyMySQL?

1、PyMySQL 是在 Python3.x 版本中用于连接 MySQL 数据库的一个python包
Python2中则使用mysqldb
2、在使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装
1、pycharm 安装
2、pip install PyMySQL(详情参考可见PIP安装)

PyMySQL的使用方法

import pymysql
-- 创建连接
conn = pymysql.connect("localhost","root","123456","mydb")

-- 使用 cursor() 方法创建游标,用于执行sql语句并获得结果
cursor = conn.cursor()

-- 使用 execute()  方法执行 SQL 查询 
cursor.execute("SELECT VERSION()")

-- 关闭连接
conn.close()

插入数据
#增加数据
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
         LAST_NAME, AGE, SEX, INCOME)
         VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
try:
   cursor.execute(sql)
   # 提交当前游标的全部操作
   conn.commit()
except:
   conn.rollback()

获取查询结果
# 执行查询
insert_sql = "select * from class"
cursor.execute(insert_sql)

# 获取单条
one_data = cursor.fetchone()
print(one_data)
print("一条数据获取完毕")

# 获取多条
many_data = cursor.fetchmany(num)
print(many_data)
print("many数据获取完毕")

# 获取剩余全部
all_data = cursor.fetchall()
print(all_data)
print("all数据获取完毕")
for i in all_data:
    print(i)
    print(i[0])
    print(i[1])
    print(i[2])
    print(i[3])
    print "fname=%s,lname=%s,age=%s,sex=%s,income=%s" % (fname, lname, age, sex, income )

更新数据
update_sql = 'update stu set name="明明" where id =2'
try:
    cursor.execute(update_sql)
    print('sql执行完毕')
    conn.commit()
    print('sql提交完毕')
except:
   conn.rollback()

删除数据
delete_sql = "delete from stu where id =2"
try:
   cursor.execute(delete_sql)
   conn.commit()
except:
   conn.rollback()

关闭连接及游标
cursor.close()
conn.close()

练习
import pymysql
import traceback
from time import sleep

class PyMySQL(object):
    create_table = 'create table stu(id int not null primary key auto_increment,name varchar(255) not null,age int, sex varchar(255))default charset=utf8'
    select = 'select * from class'
    update = 'update stu set name="明明" where id=2'
    delete = 'delete from stu where id=9'
    insert = 'insert into stu(name,age,sex) values("%s","%d","%s")' % ('小明', 2, "男")

    def __init__(self, host, user, pwd, db):
        self.conn = pymysql.connect(host, user, pwd, db)
        self.cursor = self.conn.cursor()

    def create_table_func(self):
        self.cursor.execute(PyMySQL.create_table)
        print('数据表创建完毕')

    def insert_date(self):
        try:
            self.cursor.execute(PyMySQL.insert)
            self.conn.commit()
        except:
            print(traceback.format_exc())
            self.conn.rollback()

    def update_data(self):
        try:
            self.cursor.execute(PyMySQL.update)
            self.cursor.commit()
        except:
            print(traceback.format_exc())
            self.conn.rollback()

    def delete_data(self):
        try:
            self.cursor.execute(PyMySQL.delete)
            self.conn.commit()
        except:
            print(traceback.format_exc())
            self.conn.rollback()
            
    def select_data(self):
        self.cursor.execute(PyMySQL.select)

        all_data = self.cursor.fetchall()
        for i in all_data:
            print('查询结果为:{}'.format(i))

if __name__ == '__main__':
    my = PyMySQL('localhost','root','123456','python21_test')
    my.create_table_func()
    my.insert_date()
    my.update_data()
    my.delete_data()
    my.select_data()

Connection Objects

Connection类提供以下方法

1、.close()

从这一点开始,连接将不可用;如果试图对连接执行任何操作,将会引发错误(或子类)异常

2、.commit()
  • 将操作提交到数据库。
  • 如果数据库支持自动提交特性,则必须首先关闭此功能。
  • 可以提供一个接口方法将其重新打开。
3、.cursor()

创建游标,用于执行SQL语句

4、.rollback()
  • 此方法是可选的,因为并非所有数据库都提供事务支持
  • 如果数据库确实提供事务,此方法将导致数据库回滚到任何挂起事务的开始
  • 在不首先提交更改的情况下关闭连接将导致执行隐式回滚。

Cursor Objects

游标对象具有以下常用方法

1、.close()

从这一点开始,游标对象将不可用;如果试图使用游标执行任何操作,将引发错误(或子类)异常。

2、.execute()
  • 执行数据库操作(查询或命令等SQL语句)
  • 返回值没有定义。
3、.fetchone()
  • 获取查询结果的下一行,返回单个序列,或者在没有更多数据可用时返回None
  • 如果execute()的调用没有生成任何结果,或者还没有执行,则会引发错误(或子类)异常。
4、.fetchall()
  • 获取查询结果的所有(剩余)行,以序列的形式返回它们(例如元组列表)
  • 如果前面对.execute*()的调用没有生成任何结果集,或者还没有发出调用,则会引发错误(或子类)异常。

参考文档

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值