Я использую 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)
)
""")
Это код, который я пытаюсь запустить. Как бы я решил это? Спасибо заранее! :)