您的位置:首页 > 编程语言 > Python开发

MySQL-python模块的基本使用

2015-08-17 23:18 459 查看
首先是导入该模块:
>>>importMySQLdb
然后是创建与数据库的连接:
>>>conn= MySQLdb.connect('localhost','root','passwd')
(在这条命令里,localhost是指连接本地的数据库,root是指连接数据库中的root用户,passwd是该用户的密码。)
接着是创建游标
>>>cur= conn.cursor()#创建游标是用来使用SQL指令
>>>conn.select('python_test')#选择连接的数据库,该语句是连接了一个名为python_test的数据库
好,前期准备已经ok了,现在开始看看如何使用MySQL-python来进行数据库的增删查改

(在此之前,先爱心提醒一下,若以下命令要用到引号,记得最好最外面的用双引号,里面的用单引号,不然会引发“引号问题”的。如:”Ilike 'King'”和‘Ilike
'King'’对python来说是不一样的哦~~~)
1.增
#一次插入一行数据
>>>cur.execute("insertinto表名(属性名1,属性名2,...)value('值1,值2,...')")
该语句有两个缺点,第一是属性值被固定了,意思是要输入值得把语句从头打一遍,第二是一次只能输入一行数据,面对有多行数据的输入就显得很麻烦,接下来,我们一步步解决这两个问题:
#可变数据的插入
>>>sqli= "insert into表名(属性名1,属性名2,...)value(%s,%s,...)"
>>>cur.execute(sqli,('值1','值2',...))
#一次插入多个数据
>>>sqlim= "insert into表名(属性名1,属性名2,...)values(%s,%s,...)"#插入多个数据
>>>cur.executemany(sqlim,[('值11','值12',...),('值21','值22',...),('值31','值32',...),...])

如上语句,将SQL语言对象赋给一个变量,然后再使用execute()函数,函数第一个参数是SQL语言对象,第二个为参数是一个元组,元组内为属性对应的值,这样就可以实现可变数据的插入;
进一步,在定义SQL语言对象时,把value改为values,再使用executemany()函数,该函数第一个参数仍然是SQL语言对象,第二个参数是一个列表,列表内是多个元组,元组内是对应的属性值,这样就可以实现一次插入多个值。

2.删&改
类似增加的操作,删和改也是用相同的方法,使用execute()函数处理相应的SQL语句即可:
>>>cur.execute('deletefrom student where id=3')
>>>cur.execute("updatestudent set name='aa' where id='3'")
(注:student为表名)
3.查
相对于增,删和改,查会麻烦一点,因为前者都可以用一句命令完成,而查这个动作一般得两句命令,这是因为在MySQL里,select语句可以把表打印出来,但是在python里是无法将表打印出来的。
首先使用第一条命令,用于查询该表有多少条记录:
>>>cur.execute("select * from student")
然后可以使用fetchone命令对表内记录逐条查询
>>>cur.fetchone()#出来一条
>>>cur.fetchone()#出来下一条
该命令的缺陷在于像存在一个无形的指针一样,你只能一直往下查,不能回头,而且到底(最后一条记录)之后就不能再继续查询了。
此时我们可以用以下命令将那个无形的指针移动:
>>>cur.scroll(移动多少,'移动位置')
该函数的第一个参数是移动位数,第二个参数是指将那个无形的指针安置的位置,如scoll(0,absolute),就是指把无形指针安置到开头第一个位置,然后往下移动0位。(关于该函数我知道的不多,有兴趣的读者可自行百度)

以上并没有解决一次取一行的缺陷,而我们用以下函数一下取多行:
>>>cur.fetchmany(15)
其中15是指取15条记录。
所以对于SQL语句select*
from student,在python里我们用cur.fetchmany(cur.execute("setlect
* from table.name"))可达到同样效果。

到这里,你已经把增删查改的基本操作都学了,但是事情还没有完,你得把你对数据库的操作传给数据库,数据库才会按你的命令对自己进行改造,此时你的输入:

>>>conn.commit()
commit命令用于把事务所做的修改保存到数据库。
(注:commit()与MySQL的存储引擎对事务的支持有关。原来MySQL中有多种类型的存储引擎,例如:MyISAM,InnoDB等。MyISAM不支持事务处理,而InnoDB是事务型数据库,支持事务。
有的人安装的MySQL的默认存储引擎就是InnoDB,所以对数据库数据的操作会在事先分配的缓存中进行,只有在commit之后,数据库的数据才会改变。更多参考可见链接:http://www.cnblogs.com/KarryWang/p/3225551.html)
最后的最后,关闭游标和连接,不要忽视每一个细节~~~
>>>cur.close()#先关游标
>>>conn.close()#后关连接
下面给出参考代码:

代码最后结果验证:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: