前言
现在Python越来越被大众所使用,特别是进入AI人工智能时代,对编程要求更加高效根据快捷,所以Python也经常成为人工智和大数据编程的重要语音。既然是编程语言就多多少少会需求对数据进行操作,这一篇我们带大家使用python对mysql进行的操作。
别的不说,直接上代码
MySQL 建表
建表的时候,遇到一些坑,没有解决,如修改 MySQL 的默认引擎,default-storage-engine=InnoDB;
执行报错 。。。无奈
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
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 ,欲哭无泪啊。然后我就重新开始建表,测试。
到此这篇关于Python操作MySQL数据库的简单步骤的文章就介绍到这了,更多相关Python操作MySQL数据库内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/Sunshine_wz/article/details/85989880