Can';t使用python插入mysql数据库

Can';t使用python插入mysql数据库,python,mysql,python-2.7,Python,Mysql,Python 2.7,我试图插入到我的数据库中,但什么都没有发生,没有错误,什么都没有 类别: class Database: host = 'localhost' user = 'root' password = '' db = 'quinielas' def __init__(self): self.connection = MySQLdb.connect(self.host, self.user, self.password, self.db) self.connection.autocom

我试图插入到我的数据库中,但什么都没有发生,没有错误,什么都没有

类别:

class Database:

host = 'localhost'
user = 'root'
password = ''
db = 'quinielas'

def __init__(self):
    self.connection = MySQLdb.connect(self.host, self.user, self.password, self.db)
    self.connection.autocommit(True)
    self.cursor = self.connection.cursor()

def insert(self, query):
    try:
        self.cursor.execute(query)
        self.connection.commit() #metodo para acceptar actualizaciones

    except MySQLdb.Error:
        self.connection.rollback() #metodo para descartar actualizaciones


def query(self, query):
    cursor = self.connection.cursor( MySQLdb.cursors.DictCursor )
    cursor.execute(query)

    return cursor.fetchall()

def __del__(self):
    self.connection.close()
查询:

db = Database()
query = "INSERT INTO jugadores (`name`, `r1`, `r2`, `r3`, `r4`," \
                " `r5`, `r6`, `r7`, `r8`, `r9`)" \
                " VALUES (%s, %d, %d, %d, %d, %d, %d, %d, %d, %d)"
db.insert(query .format(name, r1, r2, r3, r4, r5, r6, r7, r8, r9))
我将python 2.7与以下库一起使用:

首先,您需要在
中输出一条消息,除了
try/catch
之外,以查看MySQL异常。其次,字符串插值将
%
运算符和
.format()
方法合并在一起。
%
运算符使用
%s
(用于字符串)和
%d
(用于数字),而
.format
使用大括号,
{}
作为任何类型的占位符。在构建连接字符串时,需要选择其中一个版本

但是,在SQL中,在将值传递到查询中时,两者都不应使用,因为您应该将它们绑定为参数。在大多数Python MySQL API中,占位符是
%s
,不应与Python的
%
运算符的字符串占位符混淆。例如,其他RDM使用
占位符

考虑在定义的类Database中调整您的方法,以接收要在的第二个可选参数中使用的元组或参数列表。此外,将显示异常消息的正确字符串格式:

def insert(self, query, parameters):
    try:
        self.cursor.execute(query, parameters)
        self.connection.commit() #metodo para acceptar actualizaciones

    except MySQLdb.Error as e:
        print('MySQL error is: {}'.format(e))
        self.connection.rollback() #metodo para descartar actualizaciones
然后,调整调用以传递带有字符串格式的准备语句的参数列表:

db = Database()
preparedstmt = "INSERT INTO jugadores (`name`, `r1`, `r2`, `r3`, `r4`," \
                " `r5`, `r6`, `r7`, `r8`, `r9`)" \
                " VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
params_tuple = (name, r1, r2, r3, r4, r5, r6, r7, r8, r9)

db.insert(preparedstmt, params_tuple)