cx_ oracle, "таблица или представление не существует" при добавлении внешних ключей - PullRequest
0 голосов
/ 19 апреля 2020

Я использую cx_ oracle на python. Я пытался добавить внешние ключи, но получаю DatabaseError: ORA-00942: table or view does not exist. Код прилагается.

try:
    c.execute(
        """
          DROP TABLE customers CASCADE CONSTRAINTS
        """)
    c.execute(
        """
          DROP TABLE orders CASCADE CONSTRAINTS
        """) 
    c.execute(
        """
          DROP TABLE employees CASCADE CONSTRAINTS
        """) 
except:
    print("Database cleared")

I did this to clear the database every time I re-run the file. 

c.execute(
    """
    CREATE TABLE orders(
        Orders_ID                           VARCHAR2(8 BYTE) NOT NULL,
        Orders_Price                        NUMBER(10,2),
        Orders_OrderTimeStamp               DATE    DEFAULT SYSDATE,       
        Orders_DeliveryFee                  NUMBER(10,2),
        Orders_RequiredDeliveryTimeStamp    DATE DEFAULT SYSDATE,
        Orders_Status                       VARCHAR2(50 BYTE) NOT NULL,
        Customer_ID_FK                         VARCHAR2(8 BYTE) NOT NULL,
        Employees_ID_FK                         VARCHAR2(8 BYTE) NOT NULL,
    CONSTRAINT orders_PK PRIMARY KEY (Orders_ID)
    )
    """)

c.execute(
    """
    ALTER TABLE orders
    ADD CONSTRAINT Orders_FK1
        FOREIGN KEY (Customer_ID_FK)
        REFERENCES customers(customer_ID)
    """)

c.execute(
    """
    ALTER TABLE orders
    ADD CONSTRAINT Orders_FK2
        FOREIGN KEY (Employees_ID_FK)
        REFERENCES employees(Employees_ID)
    """)

c.execute(
    """
    CREATE TABLE employees(
        Employees_ID              VARCHAR2(8 BYTE) NOT NULL,
        Employees_FName           VARCHAR2(20 BYTE) NOT NULL,
        Empolyees_LName           VARCHAR2(20 BYTE) NOT NULL,
        Empolyees_Username        VARCHAR2(20 BYTE) NOT NULL,
        Employees_Password        VARCHAR2(20 BYTE) NOT NULL,
        Employees_Email           VARCHAR2(50 BYTE) NOT NULL,
        Employees_Position        VARCHAR2(20 BYTE) NOT NULL,
        Employees_Phone_Number    NUMBER(20),
    CONSTRAINT employees_PK PRIMARY KEY (Employees_ID)
    )
    """)

c.execute(
    """
    CREATE TABLE customers (
        Customer_ID            VARCHAR2(8 BYTE) NOT NULL,
        Customer_FName         VARCHAR2(20 BYTE) NOT NULL,
        Customer_LName         VARCHAR2(20 BYTE) NOT NULL,
        Customer_Address       VARCHAR2(100 BYTE) NOT NULL,
        Customer_Email         VARCHAR2(50 BYTE) NOT NULL,
        Customer_Username      VARCHAR2(8 BYTE) NOT NULL,
        Customer_Password      VARCHAR2(8 BYTE) NOT NULL,
        Customer_Phone_Number  NUMBER(20) NOT NULL,
    CONSTRAINT customer_PK PRIMARY KEY (Customer_ID)
    )
    """) 

Это код, который я пытаюсь запустить. Как бы я решил это? Спасибо заранее! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...