mysqldb interfaceError - PullRequest
       5

mysqldb interfaceError

6 голосов
/ 18 апреля 2011

У меня очень странная проблема с mysqldb (модуль mysql для python).

У меня есть файл с запросами для вставки записей в таблицы. Если я вызываю функции из файла, он работает просто отлично; но при попытке вызвать одну из функций из другого файла он выдает

_mysql_exception.InterfaceError: (0, '')

Я действительно не понимаю, что я делаю здесь неправильно ..

Я вызываю функцию с buildDB.py:

import create

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

Функция newFormat (..) находится в create.py (импортировано):

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)

А класс База данных выглядит следующим образом:

импорт MySQLdb из 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)

(я ставлю только соответствующий код)

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, '')

Предупреждение никогда не было проблемой, поэтому я не думаю, что оно связано.

Ответы [ 3 ]

20 голосов
/ 12 ноября 2012

Я получил эту ошибку, когда пытался использовать закрытое соединение.

3 голосов
/ 20 апреля 2011

Проблема решена .. Я дважды инициализировал базу данных .. Извините, если вы потеряли время, читая это!

0 голосов
/ 20 апреля 2011

Я не могу заставить вашу установку работать.Я все время выдаю одну и ту же ошибку.Однако способ подключения и обработки запросов к БД с помощью запроса представляется "нестандартным" .Мне повезло больше с этой настройкой:

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))

Таким образом, вы можете воспользоваться преимуществами экранирования входа модулей db, которое необходимо для предотвращения атак инъекций sql.

...