python 错误:"'NoneType' object has no attribute 'execute'"
来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/07/08 09:57:18
python 错误:"'NoneType' object has no attribute 'execute'"
import MySQLdb
class mysql():
def __enter(self):#In any MultiTasking environment the ability to atomically execute a section of code is very important.To create a critical section in stackless
self.__tasklet = stackless.getcurrent()
self.__atomic = self.__tasklet.set_atomic(True)
def Connect(self,*args,**kwargs):
self.conn = MySQLdb.connect(*args,**kwargs)
self._cursor = self.conn.cursor()
self._trans = False
#After mysql-python 1.12,* Turn autocommit off initially
#But here we enable autocommit again.
self.conn.autocommit(True)
self._args = args
self._kwargs = kwargs
return self.conn
#MySQL python Version 1.1.2
# * Remove Connection.begin(); use SQL BEGIN or START TRANSACTION instead self.conn.begin()
def Begin(self):
#If already start transaction,donn't restart it.maybe commit the last trans
if self._trans:return
self._cursor.execute("BEGIN")
self._trans = True
def Insert(self,sql,para ):
self.__enter()
_cursor = self.conn.cursor()
_cursor.execute(sql,para)
ret = _cursor.lastrowid
_cursor.close()
self.__exit()
return ret
f=mysql()
f.Connect(user="root",passwd="12345",host="localhost",db="yingtest")
f.Begin()
f.Insert("insert into note values('%s,%s')"%[4,'yes'])
运行错误:
Traceback (most recent call last):
File "C:\Documents and Settings\Administrator\桌面\12345.py",line 38,in
f.Begin()
File "C:\Documents and Settings\Administrator\桌面\12345.py",line 23,in Begi
n
self._cursor.execute("BEGIN")
AttributeError:'NoneType' object has no attribute 'execute'
按照分析来讲 我想是f.Connect(user="root",passwd="12345",host="localhost",db="yingtest")这句没运行成功 求分析 .
在 self.conn = MySQLdb.connect(*args,**kwargs)
和 self._cursor = self.conn.cursor()
后面各打印了print self.conn和print self._cursor 运行结果:
None
问题就在self._cursor = self.conn.cursor()这里 求分析 .
import MySQLdb
class mysql():
def __enter(self):#In any MultiTasking environment the ability to atomically execute a section of code is very important.To create a critical section in stackless
self.__tasklet = stackless.getcurrent()
self.__atomic = self.__tasklet.set_atomic(True)
def Connect(self,*args,**kwargs):
self.conn = MySQLdb.connect(*args,**kwargs)
self._cursor = self.conn.cursor()
self._trans = False
#After mysql-python 1.12,* Turn autocommit off initially
#But here we enable autocommit again.
self.conn.autocommit(True)
self._args = args
self._kwargs = kwargs
return self.conn
#MySQL python Version 1.1.2
# * Remove Connection.begin(); use SQL BEGIN or START TRANSACTION instead self.conn.begin()
def Begin(self):
#If already start transaction,donn't restart it.maybe commit the last trans
if self._trans:return
self._cursor.execute("BEGIN")
self._trans = True
def Insert(self,sql,para ):
self.__enter()
_cursor = self.conn.cursor()
_cursor.execute(sql,para)
ret = _cursor.lastrowid
_cursor.close()
self.__exit()
return ret
f=mysql()
f.Connect(user="root",passwd="12345",host="localhost",db="yingtest")
f.Begin()
f.Insert("insert into note values('%s,%s')"%[4,'yes'])
运行错误:
Traceback (most recent call last):
File "C:\Documents and Settings\Administrator\桌面\12345.py",line 38,in
f.Begin()
File "C:\Documents and Settings\Administrator\桌面\12345.py",line 23,in Begi
n
self._cursor.execute("BEGIN")
AttributeError:'NoneType' object has no attribute 'execute'
按照分析来讲 我想是f.Connect(user="root",passwd="12345",host="localhost",db="yingtest")这句没运行成功 求分析 .
在 self.conn = MySQLdb.connect(*args,**kwargs)
和 self._cursor = self.conn.cursor()
后面各打印了print self.conn和print self._cursor 运行结果:
None
问题就在self._cursor = self.conn.cursor()这里 求分析 .
感觉数据库没有正确连接,你确认所以参数都对吗?没有漏掉哪个?比如端口.
def Connect(self,*args,**kwargs):
self.conn = MySQLdb.connect(*args,**kwargs)
self._cursor = self.conn.cursor()
在这里先打印这两个对象看一下,看有没有正确创建.
再问: 端口默认3306啊 我照你的方法在两句后面各打印了print self.conn和print self._cursor 运行结果和上面的一样 说明这两个对象没问题呀 为什么一传到begin()里面就这个鸟样了
再答: 我是让你打印的那两个对象的地址是什么,类型的什么,能贴出来看看吗?
再问: 不好意思啊 我太菜了 听不懂你说的什么 对象的地址和类型怎么打印呢 如何操作
再答: 就是你那两条Print语句,输出的结果是什么.
再问: None
再答: 这就说明self._cursor = self.conn.cursor()这句的执行结果出错了,没有正确创建对象。对不起,我没有用过python的mysql模块,但问题一定出在这一句上,你再看看相关资料。 或者你把self.conn = MySQLdb.connect(*args, **kwargs) 这句换成直接用具体参数连接试试看.
再问: 解决了 原来是我的mysqldb版本不符合 汗- - 不过还是谢谢你了!
def Connect(self,*args,**kwargs):
self.conn = MySQLdb.connect(*args,**kwargs)
self._cursor = self.conn.cursor()
在这里先打印这两个对象看一下,看有没有正确创建.
再问: 端口默认3306啊 我照你的方法在两句后面各打印了print self.conn和print self._cursor 运行结果和上面的一样 说明这两个对象没问题呀 为什么一传到begin()里面就这个鸟样了
再答: 我是让你打印的那两个对象的地址是什么,类型的什么,能贴出来看看吗?
再问: 不好意思啊 我太菜了 听不懂你说的什么 对象的地址和类型怎么打印呢 如何操作
再答: 就是你那两条Print语句,输出的结果是什么.
再问: None
再答: 这就说明self._cursor = self.conn.cursor()这句的执行结果出错了,没有正确创建对象。对不起,我没有用过python的mysql模块,但问题一定出在这一句上,你再看看相关资料。 或者你把self.conn = MySQLdb.connect(*args, **kwargs) 这句换成直接用具体参数连接试试看.
再问: 解决了 原来是我的mysqldb版本不符合 汗- - 不过还是谢谢你了!
360浏览器object#has no method'load'
英语竞赛智力题What object has keys that open no locks,space but no
英语单词填空 221 1 分 保存 If no one has any (object)______,I'll decl
英语竞赛智力题,急求What object has keys that open no locks,space but
object
英语翻译money is no object钱不是问题,请问object在句子里的本意是什么?
java.lang.NullPointerException:No JFreeChart object found on
Which of the following sentences has an object complement?A.
which of following sentences has an object complement?
Which of the following sentences has an object complement?
详细说明选项错误原因There is no bus,He has to go there____his bicycle
She has no much time to play.这句话有错误吗?