提问人:Bryan Archambeault 提问时间:1/16/2020 最后编辑:Bryan Archambeault 更新时间:1/16/2020 访问量:125
将 sql 文本文件加载到变量中并通过 pymysql 提交插入/更新查询会产生警告 - 可以安全忽略吗?
Loading sql text file into variable and submitting insert/update query via pymysql produces warnings - safe to ignore?
问:
我有一些存储在 .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 文本文件是视图创建,而不是 SP 创建,并且视图中的字段数量确实超过了行大小,因此谜团在那里解开了。我仍在试图弄清楚究竟是什么导致了第二个警告。
更新2:
我想出了第二个警告。生成该文本文件的 sql 文本文件是 SP 创建,其中有一个变量声明为 DECLARE v_sql VARCHAR(32000)。我将其更改为 VARCHAR(2000),警告消失了。因此,看起来变量大于特定大小将生成该警告。
答:
0赞
Bryan Archambeault
1/16/2020
#1
对于我发布的第一个警告,问题是:生成该警告的 sql 文本文件是视图创建,而不是 SP 创建,并且视图中的字段数量确实超过了行大小
对于我发布的第二个警告,问题是:生成该警告的 sql 文本文件是 SP 创建,并且其中有一个变量声明为 DECLARE v_sql VARCHAR(32000)。我将其更改为 VARCHAR(2000),警告消失了。因此,看起来变量大于特定大小将生成该警告。
评论