Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python psycopg2无法执行多个查询_Python_Postgresql_Psycopg2 - Fatal编程技术网

Python psycopg2无法执行多个查询

Python psycopg2无法执行多个查询,python,postgresql,psycopg2,Python,Postgresql,Psycopg2,我在使用psycopg2对我的psql数据库执行多个查询时遇到问题。例如: #!/usr/bin/env python #-*- coding: utf-8 -*- import psycopg2 from psycopg2.extras import RealDictCursor def CreateUser(user, mySchema): conn = psycopg2.connect("dbname='postgres' user='root' password='some

我在使用psycopg2对我的psql数据库执行多个查询时遇到问题。例如:

#!/usr/bin/env python
#-*- coding: utf-8 -*-

import psycopg2
from psycopg2.extras import RealDictCursor

def CreateUser(user, mySchema):

    conn = psycopg2.connect("dbname='postgres' user='root' password='somePassword' host='localhost'")
    cur = conn.cursor()
    cur.execute("""create user %s""" % (user)) 
    conn.commit()
    cur.close()
    conn.close()
    CreateSchema(user, mySchema)


def CreateSchema(user, mySchema):
    conn = psycopg2.connect("dbname='postgres' user='root' password='somePassword' host='localhost'")
    cur = conn.cursor()
    cur.execute("""create schema %s authorization %s """ % (user,mySchema))
    conn.commit()
    cur.close()
    conn.close()

def FetchUserInput():
    userInput = raw_input("UserName")
    mySchema = raw_input("SchemaName")
    CreateUser(userInput, mySchema)


FetchUserInput()
在这种情况下,第二个查询将失败,并出现一个用户以前创建的不存在的错误! 如果我只执行CreateUser函数,它就可以正常工作。 如果我在psql中手动执行它,它工作得很好

好像当我在CreateSchema函数中打开第二个连接时,第一次提交没有在数据库上执行,这毫无意义


我做错了什么?

看起来您刚刚颠倒了第二个查询中的两个参数:

cur.execute("""CREATE SCHEMA %s AUTHORIZATION %s """ % (mySchema, user))
来自文档的一些帮助:

创建架构名称[授权用户名][架构元素[…]]

创建架构授权用户名[架构元素[…]]

如果不存在,则创建架构架构\u名称[授权用户\u名称]

如果不存在授权用户名,则创建架构