mirror of https://github.com/zulip/zulip.git
import_message_data: Use psycopg2.extras.execute_values.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
parent
6649c8e35f
commit
2604ebba38
|
@ -34,7 +34,7 @@ class TimeTrackingCursor(cursor):
|
|||
return wrapper_execute(self, super().execute, query, vars)
|
||||
|
||||
def executemany(self, query: Query,
|
||||
vars: Iterable[Params]) -> 'TimeTrackingCursor':
|
||||
vars: Iterable[Params]) -> 'TimeTrackingCursor': # nocoverage
|
||||
return wrapper_execute(self, super().executemany, query, vars)
|
||||
|
||||
class TimeTrackingConnection(connection):
|
||||
|
|
|
@ -12,6 +12,8 @@ from django.db.models import Max
|
|||
from django.utils.timezone import now as timezone_now
|
||||
from typing import Any, Dict, List, Optional, Set, Tuple, \
|
||||
Iterable, cast
|
||||
from psycopg2.extras import execute_values
|
||||
from psycopg2.sql import Identifier, SQL
|
||||
|
||||
from analytics.models import RealmCount, StreamCount, UserCount
|
||||
from zerver.lib.actions import UserMessageLite, bulk_insert_ums, \
|
||||
|
@ -1289,12 +1291,15 @@ def import_attachments(data: TableData) -> None:
|
|||
# TODO: Do this the kosher Django way. We may find a
|
||||
# better way to do this in Django 1.9 particularly.
|
||||
with connection.cursor() as cursor:
|
||||
sql_template = '''
|
||||
insert into %s (%s, %s) values(%%s, %%s);''' % (m2m_table_name,
|
||||
parent_id,
|
||||
child_id)
|
||||
sql_template = SQL('''
|
||||
insert into {} ({}, {}) values %s
|
||||
''').format(
|
||||
Identifier(m2m_table_name),
|
||||
Identifier(parent_id),
|
||||
Identifier(child_id),
|
||||
)
|
||||
tups = [(row[parent_id], row[child_id]) for row in m2m_rows]
|
||||
cursor.executemany(sql_template, tups)
|
||||
execute_values(cursor.cursor, sql_template, tups)
|
||||
|
||||
logging.info('Successfully imported M2M table %s', m2m_table_name)
|
||||
|
||||
|
|
Loading…
Reference in New Issue