python学习之操作mysql

时间:2021-08-20 20:48:25

欢迎点击个人博客 http://www.iwangzheng.com/

刚开始学python,所以很多代码都需要在ipython里尝试一下。今天记录的是最基本的操作mysql数据库。

写数据库连接操作的时候,仿佛回到了当年在前两家公司写asp.net的感觉。

1.首先在mysql数据库里新建个数据库

create database db_02  default charset utf8;

create table user (id int auto_increment primary key,username char(20),email char(20));

2.开始写python代码

import MySQLdb

conn = MySQLdb.connect(user=’root’,host=’localhost’,passwd=”)

conn.select_db(‘db_02′)

cursor =conn.cursor()

sql = ‘insert into user(name,email) values(“andy”,”andy@163.com”)’

cursor.execute(sql)

————————————————

cursor.execute(‘insert into user(name,email) values(“andy”,”andy@163.com”)’)

查看:

In [14]: sql=’select * from user’

In [15]: cur.execute(sql)

Out[15]: 2L

In [16]: cur.fetchone()

Out[16]: (1L, ‘andy’, ‘andy@163.com’, None)

In [17]: cur.fetchone()

Out[17]: (2L, ‘andy’, ‘andy@163.com’, None)

In [19]: cur.execute(sql)

Out[19]: 2L

In [20]: cur.fetchall()

Out[20]: ((1L, ‘andy’, ‘andy@163.com’, None), (2L, ‘andy’, ‘andy@163.com’, None))

最后是

cursor.close()

conn.close()

写到这里认为万事大吉喽,去mysql里一看发现数据没进来,找了原因才知道这是与表的类型有关。

mysql> show create table user;

+——-+————————————————————————————–

| Table | Create Table

+——-+————————————————————————————–

| user  | CREATE TABLE `user` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` char(20) NOT NULL,

`email` char(20) NOT NULL,

`password` char(200) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 |

+——-+————————————————————————————–

因为用的是InnoDB,不是MyISAM, MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。MyISAM的读性能是比Innodb强不少的.

所以只要加上一句conn.commit(),数据库里就可以看到记录了