Joh*_*nna 6 python mysql mysql-python
我对mysqldb(python的mysql模块)有一个非常奇怪的问题.
我有一个文件,其中包含用于在表中插入记录的查询.如果我从文件中调用函数,它就可以正常工作; 但是当试图从另一个文件调用其中一个函数时,它会抛出一个
_mysql_exception.InterfaceError:(0,'')
我真的不明白我在做错了什么..
我从buildDB.py以下函数调用函数:
import create
create.newFormat("HD", 0,0,0)
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
类数据库如下:
从MySQLdb.constants导入MySQLdb导入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)
Run Code Online (Sandbox Code Playgroud)
(我只提了相关代码)
追溯 :
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, '')
Run Code Online (Sandbox Code Playgroud)
这个警告以前从来都不是问题,所以我认为它不相关.
我无法让你的设置发挥作用。我总是给我同样的错误。但是,您使用查询连接到数据库并对其进行查询的方式似乎是 “非标准”。我在这个设置上运气更好:
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))
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以利用数据库模块输入转义,这是减轻 SQL 注入攻击所必需的。
| 归档时间: |
|
| 查看次数: |
11264 次 |
| 最近记录: |