当前位置: 首页 > 面试题库 >

MySQL Connector / Python-将python变量插入MySQL表

袁轶
2023-03-14
问题内容

我正在尝试将python变量插入python脚本中的MySQL表中,但是它不起作用。这是我的代码

add_results=("INSERT INTO account_cancel_predictions"
            "(account_id,21_day_probability,flagged)"
            "Values(%(account_id)s,%(21_day_probability)s,%(flagged)s)")

data_result={
    'account_id':result[1,0],
    '21_day_probability':result[1,1],
    'flagged':result[1,2]
}

cursor.execute(add_results,data_result)

cnx.commit()
cursor.close()
cnx.close()

这得到了错误

ProgrammingError: Failed processing pyformat-parameters; 'MySQLConverter' object has no attribute '_float64_to_mysql'

但是,当我将变量名result[1,0]result[1,1]和替换为result[1,2]它们的实际数值时,它确实起作用。我怀疑python正在传递实际的变量名称,而不是它们所持有的值。我该如何解决?


问题答案:

假设您正在使用mysql.connector(我想是),请定义自己的转换器类:

class NumpyMySQLConverter(mysql.connector.conversion.MySQLConverter):
    """ A mysql.connector Converter that handles Numpy types """

    def _float32_to_mysql(self, value):
        return float(value)

    def _float64_to_mysql(self, value):
        return float(value)

    def _int32_to_mysql(self, value):
        return int(value)

    def _int64_to_mysql(self, value):
        return int(value)

config = {
    'user'    : 'user',
    'host'    : 'localhost',
    'password': 'xxx',
    'database': 'db1'
}

conn = mysql.connector.connect(**config)
conn.set_converter_class(NumpyMySQLConverter)


 类似资料:
  • 问题内容: 我正在使用Python中的MySQLdb模块与数据库进行交互。我遇到的情况是有一个非常大的列表(成千上万个元素),需要将它们作为行插入表中。 我现在的解决方案是生成一个大的语句作为字符串并执行它。 有没有更聪明的方法? 问题答案: 有一种更聪明的方法。 批量插入的问题在于,默认情况下启用了自动提交功能,从而导致每个语句在下一次插入可以启动之前被保存到稳定存储中。 如手册页所述: 默认情

  • 我只是尝试在HTML中插入从表单中提取的两个值。使用Flask和mysql.connector 这是我的index.html: 和我在python(app.py)中的行: 无论出于什么原因,我在执行第一个游标时会出现内部服务器错误,但“#”游标代码可以正常工作...请问谁能告诉我,我哪里出了问题。

  • 问题内容: 我想插入变量,并到我的桌前。现在,从我可以告诉我的所有信息中,我应该做的就是,下面是我所要做的,但是这根本不会在我的表中插入任何内容。如果我对应该写的内容进行硬编码(使用它将示例写到表中,那么到目前为止我的连接和语法正确)。任何帮助将不胜感激! 我也尝试过这个: 和: 问题答案: 您需要将SQL语句和参数作为单独的参数传递: 或使用可变参数语法(splat ) : 您的版本尝试传入包含

  • 问题内容: 我在Python中有一个JSON对象。我正在使用Python DB-API和SimpleJson。我正在尝试将json插入MySQL表中。 目前出现错误,我相信这是由于JSON对象中的单引号引起的。 如何使用Python将JSON对象插入MySQL? 这是我收到的错误消息: 另一个错误供参考 这是我正在使用http://pastebin.com/q5QSfYLa的代码的链接 问题答案:

  • 问题内容: 我似乎无法使用户输入的数据进入表然后进行打印。 到目前为止,这是我的代码: 我从这里得到了“模板” /开始 解决以下 现在,我想向表中添加两个变量,即原始日志变量和另一个用作时间戳记的变量。 其余代码与上面相同。我认为这会起作用,但是当我测试它时,表中什么也没有。 问题答案: 我认为您只需要更改获取和插入值的方式即可(另外,此行的SQL中存在语法错误): 我认为您可以完全忘记该变量,除

  • 问题内容: 在PHP中,可以编写: 但是在Python中,它是: 有没有办法代替我在字符串中插入变量?如果没有的话,这更像pythonic吗? 获得参考的任何人的奖励积分 问题答案: 您现在的操作方式是一种Python方式。您也可以使用本地人字典。像这样: 现在,它看起来不太像pythonic,但这是实现PHP格式相同效果的唯一方法。我只会坚持您的操作方式。

  • 我想使用以下类型的python脚本中的SELECT,包含2个变量: 带有ID的列表 计数 类似这样的事情: “in”中的ID的数量将会改变,“limit”也会根据服务的数量改变。(在本例中,我有4个服务器id,因此限制也是4个) 我尝试了以下(这是一种场景): 不幸的是,它仅使用第一个ID的行(本例中为24),并且忽略了限制 打印(元组)的输出如下: 我想在in()部分中有“24,347,359,

  • 问题内容: 我读到这里:使用Python将CSV文件导入sqlite3数据库表 似乎每个人都建议使用逐行读取,而不是使用SQLite的bulk .import。但是,如果您有数百万行的数据,这将使插入速度非常慢。还有其他方法可以避免这种情况吗? 更新:我尝试下面的代码逐行插入,但是速度不如我预期的那样。反正有改进的地方吗 问题答案: 使用生成器表达式将您的数据即时划分为多个块,在事务内进行插入。这