python Postgresql CREATE DATABASE如果不是EXISTS是错误

Ste*_*son 1 python postgresql

我试着用python学习postgresql.我想创建条件CREATE DATABASE如果不是EXISTS,但alayas错误.错误是:

File "learn_postgres.py", line 27, in InitDatabase
cursor.execute("CREATE DATABASE IF NOT EXISTS python_db")

psycopg2.ProgrammingError: syntax error at or near "NOT"
LINE 1: CREATE DATABASE IF NOT EXISTS python_db
Run Code Online (Sandbox Code Playgroud)

Hal*_*Ali 10

Postgres不支持IF NOT EXISTSCREATE DATABASE子句中的条件,但是,IF EXISTS支持DROP DATABASE

有两种选择:

  1. 丢弃并重新创建

    cursor.execute('DROP DATABASE IF EXISTS python_db')
    cursor.execute('CREATE DATABASE python_db')
    # rest of the script
    
    Run Code Online (Sandbox Code Playgroud)
  2. 首先检查目录并在python中分支逻辑

    cursor.execute("SELECT 1 FROM pg_catalog.pg_database WHERE datname = 'python_db'")
    exists = cursor.fetchone()
    if not exists:
        cursor.execute('CREATE DATABASE python_db')
    # rest of the script
    
    Run Code Online (Sandbox Code Playgroud)