前言
现在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 ,欲哭无泪啊。然后我就重新开始建表,测试。
	声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
		
评论(0)