47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
##########################################################################
|
|
#
|
|
# pgAdmin 4 - PostgreSQL Tools
|
|
#
|
|
# Copyright (C) 2013 - 2019, The pgAdmin Development Team
|
|
# This software is released under the PostgreSQL Licence
|
|
#
|
|
##########################################################################
|
|
|
|
# Get Postgres and Python encoding
|
|
|
|
encode_dict = {
|
|
'SQL_ASCII': ['SQL_ASCII', 'raw_unicode_escape'],
|
|
'SQLASCII': ['SQL_ASCII', 'raw_unicode_escape'],
|
|
'MULE_INTERNAL': ['MULE_INTERNAL', 'raw_unicode_escape'],
|
|
'MULEINTERNAL': ['MULEINTERNAL', 'raw_unicode_escape'],
|
|
'LATIN1': ['LATIN1', 'latin1'],
|
|
'LATIN2': ['LATIN2', 'latin2'],
|
|
'LATIN3': ['LATIN3', 'latin3'],
|
|
'LATIN4': ['LATIN4', 'latin4'],
|
|
'LATIN5': ['LATIN5', 'latin5'],
|
|
'LATIN6': ['LATIN6', 'latin6'],
|
|
'LATIN7': ['LATIN7', 'latin7'],
|
|
'LATIN8': ['LATIN8', 'latin8'],
|
|
'LATIN9': ['LATIN9', 'latin9'],
|
|
'LATIN10': ['LATIN10', 'latin10']
|
|
}
|
|
|
|
|
|
def getEncoding(key):
|
|
"""
|
|
:param key: Database Encoding
|
|
:return:
|
|
[Postgres_encoding, Python_encoding] - Postgres and Python encoding
|
|
"""
|
|
return encode_dict.get(key, ['UNICODE', 'utf-8'])
|
|
|
|
def configureDriverEncodings(encodings):
|
|
# Replace the python encoding for original name and renamed encodings
|
|
# psycopg2 removes the underscore in conn.encoding
|
|
# Setting the encodings dict value will only help for select statements
|
|
# because for parameterized DML, param values are converted based on
|
|
# python encoding of pyscopg2s internal encodings dict.
|
|
for key, val in encode_dict.items():
|
|
postgres_encoding, python_encoding = val
|
|
encodings[key] = python_encoding
|