0
我有一个python脚本将文件上传到Postgres数据库服务器。这些文件然后被转换为SQL表。为此,我使用SQLalchemy库。如何在Postgres + SQLalchemy中的列名太长时引发异常?
问题出在列名太长时出现。我不希望Postgres在超过最大长度时自动截断列名(如果我正确记得,它在Postgres中是63)。表格最后有列名不明的名称,我只想让脚本取消上传。
显而易见的解决方案是在我的脚本中只是“硬编码”最大长度,如果有人试图上传带有“太长”列名的表,就引发异常。不过,我认为这应该可以在SQLalchemy中配置,例如,当表名已在数据库中使用时引发异常。从我的脚本
提取上传表:
from SQLalchemy import (
create_engine,
)
import pandas as pd
DB_CONFIG_DICT = {
'user': "user",
'host': "urlforhost.com",
'port': 5432,
'password': "password"
}
DB_CONN_FORMAT = "postgresql+psycopg2://{user}:{password}@{host}:{port}/{database}"
DB_CONN_URI_DEFAULT = (DB_CONN_FORMAT.format(database='sandbox', **DB_CONFIG_DICT))
engine = create_engine(DB_CONN_URI_DEFAULT)
path = "file.csv"
table_name = "table_name"
df = pd.read_csv(path, decimal=r".")
df.columns = [c.lower() for c in df.columns] #postgres doesn't like capitals or spaces
df.to_sql(table_name, engine)
谢谢,但这正是我试图避免做的。 – Alechan