*After deploying my django model in heroku and migrations,
我无法通过批处理运行将数据加载到postgres表中
*
例如:
heroku run python ProddbUpload.py
我对以下错误感到失望
运行python ProddbUpload.py
on ⬢ spellbeeword... up, run.9508 (Free)
relation "spellbeeword_tb" does not exist
已使用pg:psql验证表名Spellbeeword_tb是否存在于heroku环境中的Postgres数据库中我的代码上传数据到上面提到的表
import os
import psycopg2
def writedb(conn):
cur = conn.cursor()
try:
with open("spellbee/docs/Spell_Bee_Word_db.csv", 'r') as f:
cur.copy_from(f,'Spellbeeword_tb',sep=',')
# commit changes
conn.commit()
except Exception as error:
print(error)
finally:
if conn:
conn.close()
f.close()
def main():
DATABASE_URL = os.environ['DATABASE_URL']
try:
conn = psycopg2.connect(DATABASE_URL, sslmode='require')
writedb(conn)
except(Exception, psycopg2.DatabaseError) as error:
print(error)
finally:
if conn:
conn.close()
if __name__ == "__main__" :
main()
在pg:psql查询中,它显示我的表的数据库连接为-->连接到postgresql-flat-40316
但在heroku环境变量中,它显示为
===spellbeeword Config Vars
数据库URL:postgres://mlsudzmqspljyc:c2e68f055e685aa45dde87@ec2-18-206-20-102.compute-amazonaws.com:默认情况下,会进行上述配置。
我不知道如何连接postgresql-flat-40316/Spellbeeword_tb
当我用下面的代码检查时,没有打印出
cur.execute('SELECT version(('(
显示PostgreSQL数据库服务器版本
db_version=当前fetchone((打印(db_version(
Pls help me to import my data into table created by django model in heroku.
我认为,在heroku运行中,它没有确定要连接的正确数据库
我遵循了heroku postgresl django部署文档,其中
DATABASE_URL由dj数据库URL安装配置
https://devcenter.heroku.com/articles/heroku-postgresql#connecting-在python中
我通过heroku运行python<dbupload文件名.py>
需求和设置.py在单独运行之前被推送到heroku#设置DATABASE urlDATABASES={默认值:dj_database_url.config((}
=== DATABASE_URL
Plan: Hobby-dev
Status: Available
Connections: 0/20
PG Version: 13.2
Created: 2021-04-06 10:54 UTC
Data Size: 9.0 MB
Tables: 13
Rows: 68/10000 (In compliance)
Fork/Follow: Unsupported
Rollback: Unsupported
Continuous Protection: Off
Add-on: postgresql-flat-40316
table row: ('d7uobuibp87kvk', 'public', 'Spellbeeword_tb', 'BASE TABLE', None, None, None, None, None, 'YES', 'NO', None)
在数据库中,我的目标表存在,但它显示
relation "spellbeeword_tb" does not exist
LINE 1: SELECT * FROM Spellbeeword_tb;
^
有人能建议如何在代码中拼写表名以识别吗
现在我发现它对于表名中的混合大小写是区分大小写的。因此,我在";双引号,则它可以识别表
`cur.execute('SELECT * FROM "Spellbeeword_tb";')`
并且对于上面的sql语句和获取表没有抛出错误。。。。但由于以下代码,关系仍然不存在
cur.copy_from(f,"Spellbeeword_tb",sep=',')
关系";spellbeeword_tb";不存在
最终确定的Postgres数据库区分大小写。正如Camel案例中定义的表,它无法识别表名关系(尽管表用引号(两者都是"/"(因此,我将表名修改为小写。现在它可以识别表了。