【问题标题】:Can't See Data In pgAdmin after using python code使用 python 代码后在 pgAdmin 中看不到数据
【发布时间】:2018-07-21 19:42:37
【问题描述】:

我正在尝试获取数据框并将其导入 postgresql 数据库。我以前做过这个,并且总是可以使用 pgAdmin 查看数据库中的数据。但是,这一次,pgAdmin 中没有可见的数据。

这是我用来在 postgresql 数据库中创建表的 SQL 代码:

CREATE TABLE Twitterapp
(
    tweetid character varying(255),
    tweettext character varying(255),
    tweetretweetct integer,
    tweetfavoritect integer,
    tweetsource character varying(255),
    tweetcreated character varying(255),
    userid character varying(255),
    userscreen character varying(255),
    username character varying(255),
    usercreatedt character varying(255),
    user_desc character varying(255),
    userfollowerct integer,
    userfriendsct integer,
    userlocation character varying(255),
    usertimezone character varying(255)

)
WITH (
  OIDS=FALSE
);

然后,使用 python 中的 sqlalchemy 库,我尝试将我的数据框推送到数据库:

#First attempt to load data 
engine =create_engine('postgresql://username:password@link:5432/db_name')
conn = engine.connect()    
a.to_sql('public.twitterapp', con=conn, if_exists='replace', 
index=False)

由于该操作成功,我尝试从数据库中读取一个表以检查它是否有效:

##call data from database
result_set = engine.execute("SELECT * FROM twitterapp")  
for r in result_set:  
    print(r)

此代码成功返回了我的数据框中的数据,但我仍然无法在我的 pgAdmin 数据库中看到它。所以我尝试了第二种方法:

b = a.values.tolist()
sql2 = """INSERT INTO twitterapp VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s);"""
conn = psycopg2.connect("dbname='db_name' user='username' host='link' password='password'")
c = conn.cursor()
for row in b:
    c.execute(sql2, row)
    print(row)
conn.commit()

再次,它成功执行(即,不抛出错误),但 pgAdmin 中没有数据显示。

我做错了什么?!

【问题讨论】:

    标签: python postgresql sqlalchemy psycopg2 pgadmin


    【解决方案1】:

    如果您可以在会话期间显示数据但不能从 pgAdmin(不同的会话)显示数据,则可以确定您的错误是错误的提交。 我不是 sqlalchemy 的专家,但我认为您必须阅读如何管理会话以及如何提交它。 这是一个很好的链接:

    http://docs.sqlalchemy.org/en/latest/orm/session_basics.html

    你必须创建一个会话对象并执行一个提交命令:

    session.commit()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多