当前位置 博文首页 > Python操作MySQL数据库的简单步骤分享

    Python操作MySQL数据库的简单步骤分享

    作者:爱吃酸梨 时间:2021-04-28 17:41

    前言

    现在Python越来越被大众所使用,特别是进入AI人工智能时代,对编程要求更加高效根据快捷,所以Python也经常成为人工智和大数据编程的重要语音。既然是编程语言就多多少少会需求对数据进行操作,这一篇我们带大家使用python对mysql进行的操作。

    别的不说,直接上代码

    MySQL 建表

    建表的时候,遇到一些坑,没有解决,如修改 MySQL 的默认引擎,default-storage-engine=InnoDB;执行报错 。。。无奈

    use mybatistable;
    drop table Test;
    -- INNODB  支持事务 
    -- Mysql 默认的引擎是 MyISAM ,不支持事务操作
    -- 在创建 mysql 表时,最好指定表使用的引擎 
    -- 或者直接修改Mysql 默认的数据库引擎为 InnoDB
    -- default-storage-engine=InnoDB; 执行报错 。。。无奈
    
    
    create table Test(
    	 id int(10)  not null auto_increment,
    	 name varchar(20)  not null,
    	 password varchar(30) not null,
    	 constraint pk_id primary key(id),
    	 constraint uk_name unique(name)
    )engine=InnoDB charset=utf8;
    -- 查看表的引擎
    show create table Test;
    -- 更新表的引擎 ,执行报错
    -- alter table Test type = InnoDB; 
    
    insert into Test values(default,'小红',123);
    insert into Test values(default,'小李',123);
    insert into Test values(default,'小赵',123);
    insert into Test values(default,'小军',123);
    insert into Test values(default,'小方',123);
    
    select * from  Test;
    
    

    python 操作 MySQL

    import pymysql
    
    '''
        连接 mysql 数据库的步骤
        fetchall 接受全部的返回结果行
        PS:只有 innodb 类型的表才可以设置 autocommit;
    '''
    def connectMySql():
        host =  '127.0.0.1'
        username = 'root'
        password = 'root'
       # dbName = 'MyBatistable'
        # 获得数据库连接对象
        conn = pymysql.connect(host,username,password)
        #关闭数据库的自动提交事务
        conn.autocommit(False)
        # 选择要操作的数据库
        conn.select_db('MyBatistable')  #覆盖之前操作的数据库名
        # 获得游标
        cursor = conn.cursor()
        #定义 SQL 语句
        sql = 'select * from Test'
        sql1 = 'insert into test values(default,"小锅","120")'
        sql2 = 'update test set name="小库2" where id = 2'
        sql3 = 'delete from test where id = 2'
        #执行 SQL 语句
       # row = cursor._query(sql)
        #执行 execute 方法,返回影响的行数
        row = cursor.execute(sql1)
        print('row type:',type(row))
        print('受影响的行数为:',row)
        if row > 0:
            conn.commit() # 提交事务
            print('SUCCESS')
        else:
            conn.rollback() # 回滚事务
            print('Failure')
        #使用DQL ,返回结果集,以元组的形式
        nums = cursor.fetchall()
        print('nums Type:',type(nums))
        #处理结果集
        if nums != () :
            for  num in  nums:
                print('--',num)
    
    if __name__ == '__main__':
        connectMySql()
    

    总结

    Python 操作 MySQL 时,由于MySQL 默认使用时 MyISAM 引擎,不支持事务操作。而在Python操作 Mysql 中关闭自动提交事务,发现并没有卵用,然后到网上百度说,Mysql 中 InnoDB 支持事务,然后我查找一哈我自己表的引擎发现是 MyISAM ,欲哭无泪啊。然后我就重新开始建表,测试。

    js
    下一篇:没有了