免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8123 | 回复: 18
打印 上一主题 下一主题

python访问mysql产生的段错误问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-15 19:58 |只看该作者 |倒序浏览
20可用积分
运行环境
os:linux redhat 5.0
py:python 2.5.2
mysqlmod:MySQL-python-1.2.2.tar.gz

访问mysql的时 在执行cur.execute(sql)以后会返回段错误.错误提示为
Segmentation fault

这个有没有办法?

程序在windows环境下执行无问题...

论坛徽章:
0
2 [报告]
发表于 2009-03-15 21:02 |只看该作者
太笼统了,兄弟你贴一下源码呀。

论坛徽章:
0
3 [报告]
发表于 2009-03-16 11:22 |只看该作者

  1. import os
  2. import time
  3. import MySQLdb as sql
  4. os.system('''netstat -atl |awk {'print $5'}|grep '^[0-9]'|cut -f 1,12 -d : |sort -d |uniq -d -c |sort -d >/root/list.txt''')
  5. #-----------------------var def--------------------
  6. FILEPATH='/root/list.txt'
  7. sqlstr='''insert into mytable (ltime,IP,lnum,sname) values (%s,%s,%s,%s)'''

  8. SIP='192.168.1.1'
  9. SNAME='abc'
  10. SPWD='def'
  11. SDB='run'

  12. SVRNAME='server1'
  13. linestr=''
  14. datetime=time.strftime('%Y-%m-%d %H:%M:%S')
  15. conn=sql.Connection(SIP,SNAME,SPWD,SDB)
  16. cur=conn.cursor()
  17. num=0
  18. ip=''
  19. onum=0
  20. oip=''
  21. index=0
  22. ips=range(0,4)
  23. #-------------------------------------------------
  24. f=file(FILEPATH,'r')
  25. while True:
  26.     linestr = f.readline().lstrip()
  27.     if not len(linestr):
  28.         break
  29.     index=linestr.find(' ')
  30.     onum=num
  31.     num=int(linestr[0:index].strip())
  32.     if num>=5:
  33.         oip=ip;
  34.         ip=linestr[index+1:].strip()
  35.         echar=ip[len(ip)-1:]
  36.         if not (echar>='0' and echar <='9'):
  37.             for i in range(0,4):
  38.                 index=ip.find('.')
  39.                 if index=='-1' :
  40.                     index=1
  41.                 else:
  42.                     index=ip.find('.')
  43.                     ips[i]=ip[0:index]
  44.                     ips[i]=ip[0:index]
  45.                     ip=ip[index+1:]
  46.             ip='%s.%s.%s.%s' %(ips[3],ips[2],ips[1],ips[0])
  47.             if oip==ip:
  48.                 num=onum+num
  49.                 #print 'datetime %s,num is %s,ip is %s,SVRNAME is %s' % (datetime,num,ip,SVRNAME)
  50.         else:
  51.             #print 'datetime is %s,num is %s,ip is %s,SVRNAME is %s' % (datetime,num,ip,SVRNAME)
  52.             param=(datetime,ip,num,SVRNAME)
  53.             cur.execute(sqlstr,param)
  54. del cur
复制代码

这是我的代码,在执行了cur.execute之后,程序就报段错误,然后中止运行.

论坛徽章:
0
4 [报告]
发表于 2009-03-16 14:30 |只看该作者
自己顶一下

论坛徽章:
0
5 [报告]
发表于 2009-03-16 15:07 |只看该作者
直接通过客户端访问下MySQL看下是否也出现错误;
我估计不是因为Py的原因.而是MySQL本身的问题.

论坛徽章:
0
6 [报告]
发表于 2009-03-16 16:47 |只看该作者
直接访问mysql没有问题.可以正常连接

论坛徽章:
0
7 [报告]
发表于 2009-03-16 17:56 |只看该作者
del cur 是哈
cur.close()
conn.close()不行么

论坛徽章:
0
8 [报告]
发表于 2009-03-16 18:15 |只看该作者
del cur 是新cur对象删除
问题不是在这,我使用了
#! /usr/bin/python
import MySQLdb as sql
conn = sql.Connection('localhost','root')
cur = conn.cursor()
cur.execute('show databases')
list = cur.fetchall()
print list
cur.close()
conn.close()
写这段代码也同样出了这个问题.

论坛徽章:
0
9 [报告]
发表于 2009-03-17 02:19 |只看该作者
try/except 看下异常?

论坛徽章:
0
10 [报告]
发表于 2009-03-17 10:04 |只看该作者

回复 #8 jxncyjq 的帖子

三楼的代码没仔细看,
但8楼的代码应该是:
    cur.execute('show databases')
MySQL语句是以';'结束的,所以这句有问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP