将sql文本文件加载到变量中并通过pymysql提交插入/更新查询会产生警告-可以忽略吗?

问题描述 投票:0回答:1

我有一些存储在.sql文件中的存储过程。我想使用pymysql将它们添加到数据库中。因此,我正在将文件加载到变量中,如下所示:

    with open(filepath, 'r') as file:
        sql = file.read()

然后我正在使用pymysql提交它,就像这样:

    connection = pymysql.connect(...)

    with connection.cursor() as cursor:
        cursor.execute(sql)

    connection.close()

这似乎效果很好,但我收到与我有关的警告。他们看起来像这样:

/usr/lib/python3/dist-packages/pymysql/cursors.py:322: Warning: (139, 'Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.')
self._do_get_result()
/usr/lib/python3/dist-packages/pymysql/cursors.py:322: Warning: (1246, "Converting column '' from VARCHAR to TEXT")
self._do_get_result()

我的问题是:这些内容可以忽略吗?

更新:

我发现了第一个警告(有关行大小太大的警告):生成该警告的sql文本文件是View创建的,而不是SP创建的,并且视图中的字段数量确实超过了行大小,所以谜团在那里解决了。我仍在尝试找出引起第二次警告的确切原因。

更新2:

我想出了第二个警告。生成该代码的sql文本文件是SP的创建,并且其中声明了一个变量,称为DECLARE v_sql VARCHAR(32000)。我将其更改为VARCHAR(2000),警告消失了。因此,看起来变量大于特定大小会生成该警告。

python mysql warnings pymysql
1个回答
0
投票

对于我发布的第一个警告,问题是:生成该警告的sql文本文件是View创建而不是SP创建,并且视图中的字段数量确实超过了行大小

对于我发布的第二条警告,问题是:生成一个是SP创建的sql文本文件,并且在那里声明了一个变量为DECLARE v_sql VARCHAR(32000)。我将其更改为VARCHAR(2000),警告消失了。因此,看起来变量大于特定大小会生成该警告。

© www.soinside.com 2019 - 2024. All rights reserved.