diff --git a/CHANGES.rst b/CHANGES.rst
index f596197..78d0a26 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -4,7 +4,11 @@ Changelog
 3.2 (unreleased)
 ----------------
 
+- no longer escape double quotes in ``sql_quote`` - that breaks PostgreSQL
+  (`#48 <https://github.com/zopefoundation/DocumentTemplate/issues/48>`_)
+
 - Added `DeprecationWarnings` for all deprecated files and names
+  (`#42 <https://github.com/zopefoundation/DocumentTemplate/issues/42>`)
 
 - Import sorting done like Zope itself
 
diff --git a/src/DocumentTemplate/DT_Var.py b/src/DocumentTemplate/DT_Var.py
index 13b84e3..878f76f 100644
--- a/src/DocumentTemplate/DT_Var.py
+++ b/src/DocumentTemplate/DT_Var.py
@@ -524,8 +524,6 @@ REMOVE_BYTES = (b'\x00', b'\x1a', b'\r')
 REMOVE_TEXT = (u'\x00', u'\x1a', u'\r')
 DOUBLE_BYTES = (b"'", b'\\')
 DOUBLE_TEXT = (u"'", u'\\')
-ESCAPE_BYTES = (b'"',)
-ESCAPE_TEXT = (u'"',)
 
 
 def bytes_sql_quote(v):
@@ -536,9 +534,6 @@ def bytes_sql_quote(v):
     # Double untrusted characters to make them harmless.
     for char in DOUBLE_BYTES:
         v = v.replace(char, char * 2)
-    # Backslash-escape untrusted characters to make them harmless.
-    for char in ESCAPE_BYTES:
-        v = v.replace(char, b'\\%s' % char)
     return v
 
 
@@ -550,9 +545,6 @@ def text_sql_quote(v):
     # Double untrusted characters to make them harmless.
     for char in DOUBLE_TEXT:
         v = v.replace(char, char * 2)
-    # Backslash-escape untrusted characters to make them harmless.
-    for char in ESCAPE_TEXT:
-        v = v.replace(char, u'\\%s' % char)
     return v
 
 

Error in ZSQLMethod with json fields
In latest version of DocumentTemplate and ZSQLMethod symbol '"' is escaping in dtml-sqlvar statement. And it produce errors in ZSQLMethod with json string in <dtml-sqlvar ... type=string> as a value for field type json.
For example, create ZSQLMethod with one argument named "arg" and body:
select <dtml-sqlvar arg type=string>::json
Then click "Test", type {"a": "1", "b": "2"} in field "arg" and submit. Will be an error
invalid input syntax for type json СТРОКА 1: select '{\"a\": \"1\", \"b\": \"2\"}'::json
There was no such error in the previous version of DocumentTemplate and ZSQLMethod.
diff --git a/src/DocumentTemplate/tests/test_DT_Var.py b/src/DocumentTemplate/tests/test_DT_Var.py
index afa753a..8067364 100644
--- a/src/DocumentTemplate/tests/test_DT_Var.py
+++ b/src/DocumentTemplate/tests/test_DT_Var.py
@@ -108,7 +108,7 @@ class TestUrlQuoting(unittest.TestCase):
         self.assertEqual(bytes_sql_quote(br"Can\ I?"), b"Can\\\\ I?")
 
         self.assertEqual(
-            bytes_sql_quote(b'Just say "Hello"'), b'Just say \\"Hello\\"')
+            bytes_sql_quote(b'Just say "Hello"'), b'Just say "Hello"')
 
         self.assertEqual(
             bytes_sql_quote(b'Hello\x00World'), b'HelloWorld')
@@ -135,7 +135,7 @@ class TestUrlQuoting(unittest.TestCase):
         # self.assertEqual(text_sql_quote(ur"Can\ I?"), u"Can\\\\ I?")
 
         self.assertEqual(
-            text_sql_quote(u'Just say "Hello"'), u'Just say \\"Hello\\"')
+            text_sql_quote(u'Just say "Hello"'), u'Just say "Hello"')
 
         self.assertEqual(
             text_sql_quote(u'Hello\x00World'), u'HelloWorld')
@@ -163,7 +163,7 @@ class TestUrlQuoting(unittest.TestCase):
         # self.assertEqual(sql_quote(ur"Can\ I?"), u"Can\\\\ I?")
 
         self.assertEqual(
-            sql_quote(u'Just say "Hello"'), u'Just say \\"Hello\\"')
+            sql_quote(u'Just say "Hello"'), u'Just say "Hello"')
 
         self.assertEqual(
             sql_quote(u'Hello\x00World'), u'HelloWorld')

pip install -e .
parse_log_pytest
pytest
pytest coverage flake8
pip install -U pip setuptools
3.7
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
AccessControl==6.3
Acquisition==5.2
attrs @ file:///croot/attrs_1668696182826/work
AuthEncoding==5.0
BTrees==5.2
certifi @ file:///croot/certifi_1671487769961/work/certifi
cffi==1.15.1
coverage==7.2.7
DateTime==5.5
-e git+https://github.com/zopefoundation/DocumentTemplate.git@0982d86726ae3a39949f0565059e93ea697e8fd9#egg=DocumentTemplate
ExtensionClass==5.1
flake8==5.0.4
flit_core @ file:///opt/conda/conda-bld/flit-core_1644941570762/work/source/flit_core
importlib-metadata==4.2.0
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
mccabe==0.7.0
multipart==1.1.0
packaging @ file:///croot/packaging_1671697413597/work
Persistence==4.1
persistent==5.2
pluggy @ file:///tmp/build/80754af9/pluggy_1648042572264/work
py @ file:///opt/conda/conda-bld/py_1644396412707/work
pycodestyle==2.9.1
pycparser==2.21
pyflakes==2.5.0
pytest==7.1.2
python-gettext==5.0
pytz==2025.2
RestrictedPython==7.3
roman==4.2
six==1.17.0
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work
transaction==4.0
typing_extensions @ file:///croot/typing_extensions_1669924550328/work
zExceptions==5.0
zipp @ file:///croot/zipp_1672387121353/work
zope.browser==3.0
zope.component==6.0
zope.configuration==5.0.1
zope.contenttype==5.1
zope.deferredimport==5.0
zope.deprecation==5.0
zope.event==5.0
zope.exceptions==5.1
zope.hookable==6.0
zope.i18n==5.1
zope.i18nmessageid==6.1.0
zope.interface==6.4.post2
zope.location==5.0
zope.proxy==5.3
zope.publisher==7.0
zope.schema==7.0.1
zope.security==6.2
zope.sequencesort==5.0
zope.structuredtext==5.0
zope.testing==5.0.1

name: DocumentTemplate
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - attrs=22.1.0=py37h06a4308_0
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2022.12.7=py37h06a4308_0
  - flit-core=3.6.0=pyhd3eb1b0_0
  - importlib_metadata=4.11.3=hd3eb1b0_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - packaging=22.0=py37h06a4308_0
  - pluggy=1.0.0=py37h06a4308_1
  - py=1.11.0=pyhd3eb1b0_0
  - pytest=7.1.2=py37h06a4308_0
  - python=3.7.16=h7a1cb2a_0
  - readline=8.2=h5eee18b_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tomli=2.0.1=py37h06a4308_0
  - typing_extensions=4.4.0=py37h06a4308_0
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zipp=3.11.0=py37h06a4308_0
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - accesscontrol==6.3
      - acquisition==5.2
      - authencoding==5.0
      - btrees==5.2
      - cffi==1.15.1
      - coverage==7.2.7
      - datetime==5.5
      - extensionclass==5.1
      - flake8==5.0.4
      - importlib-metadata==4.2.0
      - mccabe==0.7.0
      - multipart==1.1.0
      - persistence==4.1
      - persistent==5.2
      - pip==24.0
      - pycodestyle==2.9.1
      - pycparser==2.21
      - pyflakes==2.5.0
      - python-gettext==5.0
      - pytz==2025.2
      - restrictedpython==7.3
      - roman==4.2
      - setuptools==68.0.0
      - six==1.17.0
      - transaction==4.0
      - zexceptions==5.0
      - zope-browser==3.0
      - zope-component==6.0
      - zope-configuration==5.0.1
      - zope-contenttype==5.1
      - zope-deferredimport==5.0
      - zope-deprecation==5.0
      - zope-event==5.0
      - zope-exceptions==5.1
      - zope-hookable==6.0
      - zope-i18n==5.1
      - zope-i18nmessageid==6.1.0
      - zope-interface==6.4.post2
      - zope-location==5.0
      - zope-proxy==5.3
      - zope-publisher==7.0
      - zope-schema==7.0.1
      - zope-security==6.2
      - zope-sequencesort==5.0
      - zope-structuredtext==5.0
      - zope-testing==5.0.1
prefix: /opt/conda/envs/DocumentTemplate

src/DocumentTemplate/tests/test_DT_Var.py::TestUrlQuoting::test_bytes_sql_quote src/DocumentTemplate/tests/test_DT_Var.py::TestUrlQuoting::test_sql_quote src/DocumentTemplate/tests/test_DT_Var.py::TestUrlQuoting::test_text_sql_quote
src/DocumentTemplate/tests/test_DT_Var.py::TestNewlineToBr::test_newline_to_br src/DocumentTemplate/tests/test_DT_Var.py::TestNewlineToBr::test_newline_to_br_tainted src/DocumentTemplate/tests/test_DT_Var.py::TestUrlQuoting::test_url_quoting src/DocumentTemplate/tests/test_DT_Var.py::TestUrlQuoting::test_url_quoting_plus
src/DocumentTemplate/DT_Var.py CHANGES.rst
src/DocumentTemplate/DT_Var.py CHANGES.rst