sqlalchemy orm ddl(cx_oracle.databaseerror)ora-00904 ::无效标识符

发布于 2025-01-19 11:20:37 字数 1436 浏览 1 评论 0原文

我已经根据 sqlAlchemy 文档准备了测试用例: https://docs.sqlalchemy.org/en/ 14/orm/tutorial.html#declare-a-mapping

安装版本:

cx-Oracle==8.2.1
psycopg2-binary==2.9.1
SQLAlchemy==1.4.21

数据库版本:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

DDL:

import urllib

from sqlalchemy.orm import declarative_base
from sqlalchemy import Column, Integer, String
from sqlalchemy import create_engine


Base = declarative_base()


class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(VARCHAR2(10))
    fullname = Column(VARCHAR2(10))
    nickname = Column(VARCHAR2(10))

    def __repr__(self):
       return "<User(name='%s', fullname='%s', nickname='%s')>" % (
                            self.name, self.fullname, self.nickname)
PASSWORD = 'pass'

conn_str = (f"oracle+cx_oracle://AIM:{urllib.parse.quote_plus(PASSWORD)}@host:1521/?service_name=service")

engine = create_engine(conn_str)
Base.metadata.create_all(engine)

我得到了非常奇怪的错误:

sqlalchemy.exc.DatabaseError: (cx_Oracle.DatabaseError) ORA-00904: : invalid identifier
[SQL: 
CREATE TABLE users (
    PRIMARY KEY (id)
)

]
(Background on this error at: https://sqlalche.me/e/14/4xp6)

I've prepared test case based on sqlAlchemy documentation:
https://docs.sqlalchemy.org/en/14/orm/tutorial.html#declare-a-mapping

installation versions:

cx-Oracle==8.2.1
psycopg2-binary==2.9.1
SQLAlchemy==1.4.21

DB Version:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

DDL:

import urllib

from sqlalchemy.orm import declarative_base
from sqlalchemy import Column, Integer, String
from sqlalchemy import create_engine


Base = declarative_base()


class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(VARCHAR2(10))
    fullname = Column(VARCHAR2(10))
    nickname = Column(VARCHAR2(10))

    def __repr__(self):
       return "<User(name='%s', fullname='%s', nickname='%s')>" % (
                            self.name, self.fullname, self.nickname)
PASSWORD = 'pass'

conn_str = (f"oracle+cx_oracle://AIM:{urllib.parse.quote_plus(PASSWORD)}@host:1521/?service_name=service")

engine = create_engine(conn_str)
Base.metadata.create_all(engine)

And I get really weird error:

sqlalchemy.exc.DatabaseError: (cx_Oracle.DatabaseError) ORA-00904: : invalid identifier
[SQL: 
CREATE TABLE users (
    PRIMARY KEY (id)
)

]
(Background on this error at: https://sqlalche.me/e/14/4xp6)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文