Skip to content

Commit c3e0f2f

Browse files
use server max_allowed_packet with limit for memory save.
1 parent 72c891f commit c3e0f2f

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

pymysql/connections.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -902,6 +902,9 @@ def connect(self, sock=None):
902902
self._get_server_information()
903903
self._request_authentication()
904904

905+
self.max_allowed_packet = min(self.max_allowed_packet,
906+
self.get_system_variable('max_allowed_packet', self.max_allowed_packet))
907+
905908
if self.sql_mode is not None:
906909
c = self.cursor()
907910
c.execute("SET sql_mode=%s", (self.sql_mode,))

pymysql/cursors.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class Cursor(object):
2525
#:
2626
#: Max size of allowed statement is max_allowed_packet - packet_header_size.
2727
#: Default value of max_allowed_packet is 1048576.
28-
max_stmt_length = 1024000
28+
max_stmt_length = 1024000 * 6
2929
packet_header_size = 4
3030

3131
def __init__(self, connection):
@@ -41,6 +41,7 @@ def __init__(self, connection):
4141
self._executed = None
4242
self._result = None
4343
self._rows = None
44+
self.max_stmt_length = min(Cursor.max_stmt_length, connection.max_allowed_packet - Cursor.packet_header_size)
4445

4546
def close(self):
4647
'''
@@ -159,8 +160,6 @@ def executemany(self, query, args):
159160

160161
m = RE_INSERT_VALUES.match(query)
161162
if m:
162-
if self.max_stmt_length == Cursor.max_stmt_length:
163-
self.max_stmt_length = self.connection.get_system_variable("max_allowed_packet") - self.packet_header_size
164163
q_prefix = m.group(1)
165164
q_values = m.group(2).rstrip()
166165
q_postfix = m.group(3) or ''

0 commit comments

Comments
 (0)