mysqldb interfaceError

廉价感情. 提交于 2019-12-14 00:49:24

问题


I have a very weird problem with mysqldb (mysql module for python).

I have a file with queries for inserting records in tables. If I call the functions from the file, it works just fine; but when trying to call one of the functions from another file it throws me a

_mysql_exception.InterfaceError: (0, '')

I really don't get what I'm doing wrong here..

I call the function from buildDB.py :

import create

create.newFormat("HD", 0,0,0)

The function newFormat(..) is in create.py (imported) :

from Database import Database

db = Database()

def newFormat(name, width=0, height=0, fps=0):
    format_query = "INSERT INTO Format (form_name, form_width, form_height, form_fps)  VALUES ('"+name+"',"+str(width)+","+str(height)+","+str(fps)+");"
    db.execute(format_query)

And the class Database is the following :

import MySQLdb from MySQLdb.constants import FIELD_TYPE

class Database():
    def __init__(self):
        server = "localhost"
        login = "seq"
        password = "seqmanager"
        database = "Sequence"
        my_conv = { FIELD_TYPE.LONG: int }

        self.conn = MySQLdb.connection(host=server, user=login, passwd=password, db=database, conv=my_conv)
        # self.cursor = self.conn.cursor()

    def close(self):
        self.conn.close()

    def execute(self, query):
        self.conn.query(query)

(I put only relevant code)

Traceback :

Z:\sequenceManager\mysql>python buildDB.py
D:\ProgramFiles\Python26\lib\site-packages\MySQLdb\__init__.py:34: DeprecationWa
rning: the sets module is deprecated
  from sets import ImmutableSet
INSERT INTO Format (form_name, form_width, form_height, form_fps) VALUES ('HD',0
,0,0);
Traceback (most recent call last):
  File "buildDB.py", line 182, in <module>
    create.newFormat("HD")
  File "Z:\sequenceManager\mysql\create.py", line 52, in newFormat
    db.execute(format_query)
  File "Z:\sequenceManager\mysql\Database.py", line 19, in execute
    self.conn.query(query)
_mysql_exceptions.InterfaceError: (0, '')

The warning has never been a problem before so I don't think it's related.


回答1:


I got this error when I was trying to use a closed connection.




回答2:


Problem resolved.. I was initializing the database twice.. Sorry if you lost your time reading this !




回答3:


I couldn't get your setup to work. I gives me the same error all the time. However the way you connect to and make queries to the db with the query seems to be "non-standard". I had better luck with this setup:

conn = MySQLdb.Connection(user="user", passwd="******", 
                          db="somedb", host="localhost")
cur = conn.cursor()
cur.execute("insert into Format values (%s,%s,%s,%s);", ("hd",0,0,0))

This way you can take advantage of the db modules input escaping which is a must to mitigate sql injection attacks.



来源:https://stackoverflow.com/questions/5704590/mysqldb-interfaceerror

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!