Извинения, я новичок в этом и заранее благодарю вас за любые идеи. Я создаю таблицы Postgresql
, используя sqlalchemy
для Amazon RDS
. Таблицы не отображаются, когда я пытаюсь использовать Quicksight
или SQL Workbench
. Код, который я использую (я также повторил движок, и все, кажется, работает):
from sqlalchemy import create_engine, inspect, text
import psycopg2
from sqlalchemy.types import Integer, Text, String, DateTime
ENDPOINT="db_instance_name.csnul5z77jon.us-east-1.rds.amazonaws.com"
PORT="5432"
USR="xxx"
PSSWD="xxx"
DBNAME="postgres"
#conn_string = "host='localhost' dbname='my_database' user='postgres' password='secret'
conn_string = "postgresql://{}:{}@{}:{}/{}".format(USR, PSSWD, ENDPOINT, PORT, DBNAME)
print(conn_string)
# create engine
try:
engine = create_engine(conn_string)
print("connection OK")
except Exception as e:
print("Database connection failed due to {}".format(e))
df_pull_check.to_sql(
'popular_102',
engine,
schema = 'public',
if_exists='replace',
index=False,
chunksize=500,
dtype={
"date": DateTime,
"symbol": Text,
"name": Text,
"start_popularity": Integer,
"popularity_difference": Float
}
)
with engine.connect() as con:
con.execute('ALTER TABLE popular_102 ADD COLUMN record_id SERIAL PRIMARY KEY')
Когда я проверяю имена таблиц, используя приведенный ниже код, появляется таблица popular_102
:
inspector = inspect(engine)
table_names = inspector.get_table_names()
print(table_names)
Я проверил, есть ли данные, используя приведенный ниже код, и это:
with engine.connect() as con:
df_sql = pd.read_sql('SELECT * FROM popular_102', con)
df_sql = pd.DataFrame(df_sql, con)
Я также изменил retrieve
на append
в to_sql
в первый раздел кода выше только для того, чтобы вызвать ошибку, и ошибка действительно отображается в журнале AWS:
[12959]:ERROR: column "record_id" of relation "popular_102" already exists
2020-07-13 01:02:31 xxxxx@postgres:[12959]:STATEMENT: ALTER TABLE popular_102 ADD COLUMN record_id SERIAL PRIMARY KEY
Однако таблица никогда не достигает Amazon Quicksight
или SQL Workbench
. Я могу создать таблицу в SQL Workbench
, commit to Amazon RDS
и access it in Quicksight
.
Есть мысли, что я делаю неправильно?