Skip to main content
 Web开发网 » 编程语言 » Python语言

python的MySQLdb尝试,大家可以简单了解!![分享] (转载)

2021年11月27日4250百度已收录

  前两天尝试用python写个数据拾取程序,拾取到的数据用mysql保存。想不到还被MySQLdb这个东西搞晕了我两天,在这里表示掺愧啊。但由于这次的经历,我也发觉原来python的资料真地是很少啊。还虽要各位牛人多多把外文翻译一下...........^@^。话归正传:多谢论坛里的几位朋友的帮助,才得以让我的程序完成了。我在这里总结一下我会出错的原因吧。

  由于python的资料大部份都是英文,MySQLdb的网上资料也相当少。在我大意地看了一下MySQLdb里的doc操作后。我想也不过如此。(^@^)真是大意。我用:

  import MySQLdb把模块加载进来了。并连上了数据库(conn=MySQLdb.connect(host='localhost',user='root',passwd='1234556',db='test')

  问题是我执行了一个更新语句。

  cursor = conn.sursor()

  sql = "update users set name='abcdefg' where id=1"

  cursor.execute(sql)

  我一看数据库,真地。还没错呢。表里的id=1的name还真是为abcdefg了。我心想,哈哈,也不过如此。和php操作基本一样,只是写法不同了。(想得美啊),那也没啥难了。直接写语句就是。呵呵。结果,问题来了。当我把name='abcdefg'改为name='你好'时。我的妈啊。为何出错了??摸不到头绪,好好的一条语句没写错怎么换中文就错了??马上想是不是python的中文支持问题。改。。。。。。。好,(我的想法还是把python里的语句和php里的写法是一样的,毕竟我搞了几年php了。呵呵)

  sql = "update users set name=%s where id=1" %(unicode("你好","gb2312").encode("gb2312"))

  语句都改成这样了,应该行了吧。结果运行后,哎。还真不行。提示说什么assci码不能转为gb2312什么的。总之大概就是这个意思。我他妈的。不就一条语句,怎么就左搞右搞也搞不成功。万难中我还真想起我的良师益友来了(google),在google里翻了N页。还是没有更好的资料,哎。开始心灰了。冷风吹过我的头,看了看时间,哎!都晚上2点多了。我真没办法了吧?又想到了cu了。好,cu里不是有个python版吗?想必高手也多啊。况且我这些问题,还不要紧动“高手“呢。呵呵。写。马上写,发了个MySQLdb求助帖子。睡觉。管好的三七二十一。

  第二天中行起来。上cu一看。呵呵。还真有丈义的朋友啊。回了两上帖子。我拿其中的一个朋友的回复试了一下,真地成功了。原来python里的MySQLdb的语句的写法是有些不同php的,倒像用事务处理。呵呵。到此问题解决,在此特意谢谢那两位回复的朋友。呵呵。

  总结MySQLdb的操作

  #!/usr/bin/python

  # -*- coding: gbk -*-

  import MySQLdb

  conn=MySQLdb.connect(host="localhost",user="root",passwd="123456",db="test")

  cursor = conn.cursor()

  #更新

  sql = "update users set name=%s where id=1"

  param = ("完全")

  cursor.execute(sql,param)

  cursor.close()

  #写入sql = "insert into users(name) values(%s)"

  param = ("写入")

  cursor.execute(sql,param)

  cursor.close()

  #删除

  sql = "delete from users where id=1"

  cursor.execute(sql)

  sql = "delete from users where name=%s"

  param =("写入")

  cursor.execute(sql,param)

  cursor.close()

  conn.close()

  好了,发现问题了吗?其实python里的语句在有中文里最好用事务处理来提交,这样才不会发生编码问题。如果在语句里没有中文的话,直接用cursor.execute(sql)也是可以的。

  本文源自:

评论列表暂无评论
发表评论
微信