Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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 3.x 列不存在CreateTable上的错误_Python 3.x_Sqlalchemy_Amazon Redshift - Fatal编程技术网

Python 3.x 列不存在CreateTable上的错误

Python 3.x 列不存在CreateTable上的错误,python-3.x,sqlalchemy,amazon-redshift,Python 3.x,Sqlalchemy,Amazon Redshift,我正在尝试打印红移数据库中所有表的DDL。我的代码如下所示: cnxn = engine.connect() metadata = MetaData(bind=engine, schema=SCHEMA) metadata.reflect(bind=engine) for table in metadata.sorted_tables: try: res = CreateTable(table).compile(engine) print(res)

我正在尝试打印红移数据库中所有表的DDL。我的代码如下所示:

cnxn = engine.connect()
metadata = MetaData(bind=engine, schema=SCHEMA)
metadata.reflect(bind=engine)
for table in metadata.sorted_tables:
    try:
        res = CreateTable(table).compile(engine)
        print(res)
    except ProgrammingError as e: 
        print(f"Failed to compile DDL for {table}: {e}")
        continue
我已经在其他红移数据库上测试过这段代码,它似乎工作得很好。但在这个数据库中,它失败了,给了我一个巨大的回溯:

Traceback (most recent call last):
  File "C:\Anaconda3\lib\site-packages\sqlalchemy\engine\base.py", line 1277, in _execute_context
    self.dialect.do_execute(
  File "C:\Anaconda3\lib\site-packages\sqlalchemy\engine\default.py", line 593, in do_execute
    cursor.execute(statement, parameters)
psycopg2.errors.UndefinedColumn: column c.reldiststyle does not exist
LINE 8:           CASE c.reldiststyle
                       ^


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File ".\extract_ddl.py", line 31, in <module>
    metadata.reflect(bind=engine)
  File "C:\Anaconda3\lib\site-packages\sqlalchemy\sql\schema.py", line 4458, in reflect      
    bind.engine.table_names(schema, connection=conn)
  File "C:\Anaconda3\lib\site-packages\sqlalchemy\engine\base.py", line 2320, in table_names 
    return self.dialect.get_table_names(conn, schema)
  File "<string>", line 2, in get_table_names
  File "C:\Anaconda3\lib\site-packages\sqlalchemy\engine\reflection.py", line 44, in cache   
    return fn(self, con, *args, **kw)
  File "C:\Anaconda3\lib\site-packages\sqlalchemy_redshift\dialect.py", line 532, in get_table_names
    return self._get_table_or_view_names('r', connection, schema, **kw)
  File "C:\Anaconda3\lib\site-packages\sqlalchemy_redshift\dialect.py", line 651, in _get_table_or_view_names
    all_relations = self._get_all_relation_info(connection,
  File "<string>", line 2, in _get_all_relation_info
  File "C:\Anaconda3\lib\site-packages\sqlalchemy\engine\reflection.py", line 44, in cache   
    return fn(self, con, *args, **kw)
  File "C:\Anaconda3\lib\site-packages\sqlalchemy_redshift\dialect.py", line 716, in _get_all_relation_info
    result = connection.execute("""
  File "C:\Anaconda3\lib\site-packages\sqlalchemy\engine\base.py", line 1006, in execute     
    return self._execute_text(object_, multiparams, params)
  File "C:\Anaconda3\lib\site-packages\sqlalchemy\engine\base.py", line 1175, in _execute_texPS D:\Work\Python> python .\extract_ddl.py
Connected to redshiftCreateEngine
Traceback (most recent call last):
  File "C:\Anaconda3\lib\site-packages\sqlalchemy\engine\base.py", line 1277, in _execute_context
    self.dialect.do_execute(
  File "C:\Anaconda3\lib\site-packages\sqlalchemy\engine\default.py", line 593, in do_execute
    cursor.execute(statement, parameters)
psycopg2.errors.UndefinedColumn: column c.reldiststyle does not exist
LINE 8:           CASE c.reldiststyle
                       ^


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File ".\extract_ddl.py", line 32, in <module>
    metadata.reflect(bind=engine)
  File "C:\Anaconda3\lib\site-packages\sqlalchemy\sql\schema.py", line 4458, in reflect      
    bind.engine.table_names(schema, connection=conn)
  File "C:\Anaconda3\lib\site-packages\sqlalchemy\engine\base.py", line 2320, in table_names 
    return self.dialect.get_table_names(conn, schema)
  File "<string>", line 2, in get_table_names
  File "C:\Anaconda3\lib\site-packages\sqlalchemy\engine\reflection.py", line 44, in cache   
    return fn(self, con, *args, **kw)
  File "C:\Anaconda3\lib\site-packages\sqlalchemy_redshift\dialect.py", line 532, in get_table_names
    return self._get_table_or_view_names('r', connection, schema, **kw)
  File "C:\Anaconda3\lib\site-packages\sqlalchemy_redshift\dialect.py", line 651, in _get_table_or_view_names
    all_relations = self._get_all_relation_info(connection,
  File "<string>", line 2, in _get_all_relation_info
  File "C:\Anaconda3\lib\site-packages\sqlalchemy\engine\reflection.py", line 44, in cache   
    return fn(self, con, *args, **kw)
  File "C:\Anaconda3\lib\site-packages\sqlalchemy_redshift\dialect.py", line 716, in _get_all_relation_info
    result = connection.execute("""
  File "C:\Anaconda3\lib\site-packages\sqlalchemy\engine\base.py", line 1006, in execute     
    return self._execute_text(object_, multiparams, params)
  File "C:\Anaconda3\lib\site-packages\sqlalchemy\engine\base.py", line 1175, in _execute_tex    ret = self._execute_context(
  File "C:\Anaconda3\lib\site-packages\sqlalchemy\engine\base.py", line 1317, in _execute_context
    self._handle_dbapi_exception(
  File "C:\Anaconda3\lib\site-packages\sqlalchemy\engine\base.py", line 1511, in _handle_dbapi_exception
    util.raise_(
  File "C:\Anaconda3\lib\site-packages\sqlalchemy\util\compat.py", line 178, in raise_       
    raise exception
  File "C:\Anaconda3\lib\site-packages\sqlalchemy\engine\base.py", line 1277, in _execute_context
    self.dialect.do_execute(
  File "C:\Anaconda3\lib\site-packages\sqlalchemy\engine\default.py", line 593, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedColumn) column c.reldiststyle does not exist
LINE 8:           CASE c.reldiststyle
                       ^

[SQL:
        SELECT
          c.relkind,
          n.oid as "schema_oid",
          n.nspname as "schema",
          c.oid as "rel_oid",
          c.relname,
          CASE c.reldiststyle
            WHEN 0 THEN 'EVEN' WHEN 1 THEN 'KEY' WHEN 8 THEN 'ALL' END
            AS "diststyle",
          c.relowner AS "owner_id",
          u.usename AS "owner_name",
          TRIM(TRAILING ';' FROM pg_catalog.pg_get_viewdef(c.oid, true))
            AS "view_definition",
          pg_catalog.array_to_string(c.relacl, '
') AS "privileges"
        FROM pg_catalog.pg_class c
             LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
             JOIN pg_catalog.pg_user u ON u.usesysid = c.relowner
        WHERE c.relkind IN ('r', 'v', 'm', 'S', 'f')
          AND n.nspname !~ '^pg_'
        ORDER BY c.relkind, n.oid, n.nspname;
        ]
(Background on this error at: http://sqlalche.me/e/13/f405)
回溯(最近一次呼叫最后一次):
文件“C:\Anaconda3\lib\site packages\sqlalchemy\engine\base.py”,第1277行,在执行上下文中
self.dialogue.do_执行(
文件“C:\Anaconda3\lib\site packages\sqlalchemy\engine\default.py”,第593行,在do\u execute中
cursor.execute(语句、参数)
psycopg2.errors.UndefinedColumn:列c.reldiststyle不存在
第8行:案例c
^
上述异常是以下异常的直接原因:
回溯(最近一次呼叫最后一次):
文件“\extract_ddl.py”,第31行,在
metadata.reflect(bind=engine)
文件“C:\Anaconda3\lib\site packages\sqlalchemy\sql\schema.py”,第4458行,在reflect中
bind.engine.table_名称(模式,连接=conn)
文件“C:\Anaconda3\lib\site packages\sqlalchemy\engine\base.py”,第2320行,在表\u名称中
返回self.dia方言.get_表名称(conn,schema)
文件“”,第2行,在get_表_名称中
文件“C:\Anaconda3\lib\site packages\sqlalchemy\engine\reflection.py”,第44行,缓存中
返回fn(自身、con、*args、**kw)
文件“C:\Anaconda3\lib\site packages\sqlalchemy\u redshift\dialogue.py”,第532行,位于get\u table\u names中
返回self.\u获取\u表\u或\u视图\u名称('r',连接,模式,**kw)
文件“C:\Anaconda3\lib\site packages\sqlalchemy\u redshift\dialogue.py”,第651行,位于\u get\u table\u或\u view\u名称中
所有关系=自我。获取所有关系信息(连接,
文件“”,第2行,在“获取所有关系信息”中
文件“C:\Anaconda3\lib\site packages\sqlalchemy\engine\reflection.py”,第44行,缓存中
返回fn(自身、con、*args、**kw)
文件“C:\Anaconda3\lib\site packages\sqlalchemy\u redshift\dialogue.py”,第716行,在\u get\u all\u relation\u info中
结果=连接。执行(“”)
文件“C:\Anaconda3\lib\site packages\sqlalchemy\engine\base.py”,第1006行,在execute中
返回self.\u执行\u文本(对象、多内存、参数)
文件“C:\Anaconda3\lib\site packages\sqlalchemy\engine\base.py”,第1175行,位于\u execute\u texPS D:\Work\Python>Python。\extract\u ddl.py
已连接到redshiftCreateEngine
回溯(最近一次呼叫最后一次):
文件“C:\Anaconda3\lib\site packages\sqlalchemy\engine\base.py”,第1277行,在执行上下文中
self.dialogue.do_执行(
文件“C:\Anaconda3\lib\site packages\sqlalchemy\engine\default.py”,第593行,在do\u execute中
cursor.execute(语句、参数)
psycopg2.errors.UndefinedColumn:列c.reldiststyle不存在
第8行:案例c
^
上述异常是以下异常的直接原因:
回溯(最近一次呼叫最后一次):
文件“\extract_ddl.py”,第32行,在
metadata.reflect(bind=engine)
文件“C:\Anaconda3\lib\site packages\sqlalchemy\sql\schema.py”,第4458行,在reflect中
bind.engine.table_名称(模式,连接=conn)
文件“C:\Anaconda3\lib\site packages\sqlalchemy\engine\base.py”,第2320行,在表\u名称中
返回self.dia方言.get_表名称(conn,schema)
文件“”,第2行,在get_表_名称中
文件“C:\Anaconda3\lib\site packages\sqlalchemy\engine\reflection.py”,第44行,缓存中
返回fn(自身、con、*args、**kw)
文件“C:\Anaconda3\lib\site packages\sqlalchemy\u redshift\dialogue.py”,第532行,位于get\u table\u names中
返回self.\u获取\u表\u或\u视图\u名称('r',连接,模式,**kw)
文件“C:\Anaconda3\lib\site packages\sqlalchemy\u redshift\dialogue.py”,第651行,位于\u get\u table\u或\u view\u名称中
所有关系=自我。获取所有关系信息(连接,
文件“”,第2行,在“获取所有关系信息”中
文件“C:\Anaconda3\lib\site packages\sqlalchemy\engine\reflection.py”,第44行,缓存中
返回fn(自身、con、*args、**kw)
文件“C:\Anaconda3\lib\site packages\sqlalchemy\u redshift\dialogue.py”,第716行,在\u get\u all\u relation\u info中
结果=连接。执行(“”)
文件“C:\Anaconda3\lib\site packages\sqlalchemy\engine\base.py”,第1006行,在execute中
返回self.\u执行\u文本(对象、多内存、参数)
文件“C:\Anaconda3\lib\site packages\sqlalchemy\engine\base.py”,第1175行,在\u execute\u tex ret=self.\u execute\u上下文中(
文件“C:\Anaconda3\lib\site packages\sqlalchemy\engine\base.py”,第1317行,在执行上下文中
self.\u handle\u dbapi\u异常(
文件“C:\Anaconda3\lib\site packages\sqlalchemy\engine\base.py”,第1511行,在\u handle\u dbapi\u异常中
提拉_(
文件“C:\Anaconda3\lib\site packages\sqlalchemy\util\compat.py”,第178行,在raise\U中
引发异常
文件“C:\Anaconda3\lib\site packages\sqlalchemy\engine\base.py”,第1277行,在执行上下文中
self.dialogue.do_执行(
文件“C:\Anaconda3\lib\site packages\sqlalchemy\engine\default.py”,第593行,在do\u execute中
cursor.execute(语句、参数)
sqlalchemy.exc.ProgrammingError:(psycopg2.errors.UndefinedColumn)列c.reldiststyle不存在
第8行:案例c
^
[SQL:
挑选
c、 雷金德,
n、 oid作为“schema_oid”,
n、 名称为“schema”,
c、 oid为“rel_oid”,
c、 雷尔纳姆,
案例c
当0时为“偶数”,当1时为“键”,当8时为“全部”结束
作为“diststyle”,
c、 将所有者重新命名为“所有者id”,
u、 使用名称作为“所有者名称”,
修剪(pg_catalog.pg_get_viewdef(c.oid,true))中的尾部“;”
作为“视图定义”,
pg_catalog.array_to_string(c.relacl,'
)作为“特权”
来自pg_catalog.pg_c类
左连接pg_catalog.pg_命名空间n ON n.oid=c.relnamespace
在u.usesysid=c.relowner上加入pg_catalog.pg_用户u
其中c.relkind('r','v','m','S','f')
和n.nspname!“^pg”
订单B