关于mysql-python的模块的简单使用

xiaoxiao2021-03-01  16

上篇博客介绍了如何解决在安装mysql-python中出现的问题,如果你遇到了其他的问题只能自己去google了,本篇博客只是简单介绍关于mysql-python模块的简单使用方法。主要分为表的创建、增、删、改和查。

表的创建

关于表的创建主要是使用Cursor对象执行我们事先定义好的sql语句。关于Cursor,在mysql-python模块中提供了几个在功能上有些差异的Cursor,主要分为这几种:Cursor、DictCursor、SSCursor和SSDictCursor。这本篇博客中主要会使用Cursor和DictCursor(在数据查询中) 在使用之前导入相关的类

import MySQLdb.connections from MySQLdb.cursors import DictCursor from MySQLdb.cursors import Cursor db_connection = MySQLdb.connections.Connection(host="127.0.0.1", user="root", passwd="zh4y4q5ang", db="world",charset="utf8",cursorclass=DictCursor) cur = db_connection.cursor()

建立数据库连接(不知道这里的连接是不是懒连接),这在里由于我们没有指定autoCommit的值,在执行添加或者更新数据时,运行完语句之后查看数据库是看不到效果的。需要执行commit方法,在下面会介绍到!

create_table = "create table user (id int AUTO_INCREMENT ,name varchar(40) not null,age int,birth_day VARCHAR(30) NOT NULL,PRIMARY KEY (id))ENGINE=INNODB DEFAULT CHARSET=UTF8;" cur.execute(sql)//执行运行sql语句就可以在指定的数据库中建立一个名为user的表 数据写入 跟着前面的代码走,我们需要创建新的sql语句用于执行写入操作。 insert_sql="insert into user (name,age,birth_day) values(%s,%s,%s)" insert_param=['Bob1','23','2013-12-31'] cur.execute(insert_sql,insert_param)//执行数据插入语句 db_connection.commit()//提交

如果没有最后一步的commit动作,执行的数据并没有被真正的写入进数据库。

数据的删除 创建一个用于删除数据库中记录的sql语句,具体代码如下所示 delete_sql='delete from user where age>22' cur.execute(delete_sql) db_connection.commit() 数据更新 创建一个用于更新数据库中记录的sql语句,具体代码如下所示 update_sql = 'update user set age = 22 where age=23;' cur.execute(update_sql) db_connection.commit() 数据查询 关于数据库的查询,这个动作可能是我们最常用的了。在构建连接时我们已经指明了使用的Cursor类为DictCursor,这个类的好处就是可以让结果集以字典的形式返回给调用者(就跟它的名字一样)。如果没有指定具体的Cursor类,则会使用默认的Cursor,就是cursors.Cursor这个类了!还是先看一下相关Cursor的类的继承吧

关系图很简单,区别就是Cursor继承了CursorTupleRowsMixIn,而DictCursor继承了CursorDictRowsMixIn。个人在使用过程感觉也就是造成了返回的结果集的形式不一样而已,有兴趣的可以仔细研究一下。 看一下实例代码:

sql = "SELECT * FROM city where id<%s" data = cur.execute(sql, ['5']) for row in cur.fetchallDict(): print row

输出的结果如下所示:

{'District': u'Kabol', 'Population': 1780000L, 'ID': 1L, 'CountryCode': u'AFG', 'Name': u'Kabul'} {'District': u'Qandahar', 'Population': 237500L, 'ID': 2L, 'CountryCode': u'AFG', 'Name': u'Qandahar'} {'District': u'Herat', 'Population': 186800L, 'ID': 3L, 'CountryCode': u'AFG', 'Name': u'Herat'} {'District': u'Balkh', 'Population': 127800L, 'ID': 4L, 'CountryCode': u'AFG', 'Name': u'Mazar-e-Sharif'}

不过这个接口不是标准的接口,在mysql-python的1.3版本中会删除此接口。其实个人感觉这个接口还是挺好用,只不过在将大量数据读入内存中时,字典中的key也会消耗大量的内存。

在使用Cursor类时返回的结果集如下:

(1L, u'Kabul', u'AFG', u'Kabol', 1780000L) (2L, u'Qandahar', u'AFG', u'Qandahar', 237500L) (3L, u'Herat', u'AFG', u'Herat', 186800L) (4L, u'Mazar-e-Sharif', u'AFG', u'Balkh', 127800L)

这个感觉就没有Dict方便了,要是不看语句,根本不知道数据与表中列的关系。需要我们根据sql语句中查询的字段确定数据在列表中的index。

在使用查询返回结果时相关的方法; fetchall():这个毫无疑问是返回所有的查询到的所有的结果集 fetchmany():返回指定行数的结果集 fetchone():返回一条数据 scroll():移动到指定的行。

好了,关于mysql-python模块的简单介绍就到这里,有兴趣的朋友可以自己看看源码!!!

转载请注明原文地址: https://www.6miu.com/read-3100153.html

最新回复(0)