diff --git a/.appveyor.yml b/.appveyor.yml
index b79302b8..4e14e120 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -21,8 +21,6 @@ environment:
         - {APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015, PY_VER: "36", PY_ARCH: "64"}
         - {APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015, PY_VER: "35", PY_ARCH: "32"}
         - {APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015, PY_VER: "35", PY_ARCH: "64"}
-        - {APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015, PY_VER: "34", PY_ARCH: "32"}
-        - {APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015, PY_VER: "34", PY_ARCH: "64"}
         - {APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015, PY_VER: "27", PY_ARCH: "32"}
         - {APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015, PY_VER: "27", PY_ARCH: "64"}
 
diff --git a/NEWS b/NEWS
index 3bd03f37..a05882c4 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,11 @@
 Current release
 ---------------
 
+What's new in psycopg 2.9.0
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- Dropped support for Python 3.4 (:ticket:`#1000`).
+
 What's new in psycopg 2.8.6
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/doc/src/install.rst b/doc/src/install.rst
index 8c75086b..169c2b65 100644
--- a/doc/src/install.rst
+++ b/doc/src/install.rst
@@ -132,7 +132,7 @@ The current `!psycopg2` implementation supports:
     NOTE: keep consistent with setup.py and the /features/ page.
 
 - Python version 2.7
-- Python 3 versions from 3.4 to 3.9
+- Python 3 versions from 3.5 to 3.9
 - PostgreSQL server versions from 7.4 to 13
 - PostgreSQL client library version from 9.1
 
diff --git a/psycopg/python.h b/psycopg/python.h
index f7f53962..1d3c2096 100644
--- a/psycopg/python.h
+++ b/psycopg/python.h
@@ -34,8 +34,8 @@
 #error "psycopg requires Python 2.7"
 #endif
 
-#if PY_3 && PY_VERSION_HEX < 0x03040000
-#error "psycopg requires Python 3.4"
+#if PY_3 && PY_VERSION_HEX < 0x03050000
+#error "psycopg requires Python 3.5"
 #endif
 
 #include <structmember.h>
diff --git a/scripts/appveyor.py b/scripts/appveyor.py
index 4b6cc85f..ab905710 100755
--- a/scripts/appveyor.py
+++ b/scripts/appveyor.py
@@ -696,7 +696,7 @@ class Options:
     def py_ver(self):
         """The Python version to build as 2 digits string."""
         rv = os.environ['PY_VER']
-        assert rv in ('27', '34', '35', '36', '37', '38', '39'), rv
+        assert rv in ('27', '35', '36', '37', '38', '39'), rv
         return rv
 
     @property
@@ -780,13 +780,10 @@ class Options:
         # https://wiki.python.org/moin/WindowsCompilers
         # https://www.appveyor.com/docs/windows-images-software/#python
         # Py 2.7 = VS Ver. 9.0 (VS 2008)
-        # Py 3.3, 3.4 = VS Ver. 10.0 (VS 2010)
         # Py 3.5--3.8 = VS Ver. 14.0 (VS 2015)
         # Py 3.9 = VS Ver. 16.0 (VS 2019)
         vsvers = {
             '27': '9.0',
-            '33': '10.0',
-            '34': '10.0',
             '35': '14.0',
             '36': '14.0',
             '37': '14.0',
diff --git a/setup.py b/setup.py
index 8dbe8ee0..933fd622 100644
--- a/setup.py
+++ b/setup.py
@@ -61,7 +61,6 @@ Programming Language :: Python
 Programming Language :: Python :: 2
 Programming Language :: Python :: 2.7
 Programming Language :: Python :: 3
-Programming Language :: Python :: 3.4
 Programming Language :: Python :: 3.5
 Programming Language :: Python :: 3.6
 Programming Language :: Python :: 3.7
@@ -600,7 +599,7 @@ setup(name="psycopg2",
       url="https://psycopg.org/",
       license="LGPL with exceptions",
       platforms=["any"],
-      python_requires='>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*',
+      python_requires='>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*',
       description=readme.split("\n")[0],
       long_description="\n".join(readme.split("\n")[2:]).lstrip(),
       classifiers=[x for x in classifiers.split("\n") if x],
diff --git a/tox.ini b/tox.ini
index b05e11dd..241c7a53 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,5 +1,5 @@
 [tox]
-envlist = py{27,34,35,36,37,38}
+envlist = py{27,35,36,37,38}
 
 [testenv]
 commands = make check