2016-11-17 88 views
2

如何指定表的主鍵?如果使用標準SQL進行此操作,我將使用:Python3,使用Pandas函數df.to_sql()和SQLAlchemy將數據框插入PostgreSQL數據庫

CREATE TABLE table (
    uid TEXT PRIMARY KEY NOT NULL,\ 
    age SMALLINT NOT NULL,\ 
    gen TEXT  NOT NULL,\ 
    eth TEXT  NOT NULL,\ 
    biu BOOLEAN  NOT NULL,\ 
    pst TEXT  NOT NULL,\ 
    jse TEXT  NOT NULL,\ 
    emp TEXT  NOT NULL,\ 
    inc INT   NOT NULL,\ 
    own BOOLEAN  NOT NULL,\ 
    edu INT   NOT NULL,\ 
    res TEXT  NOT NULL); 

然後使用INSERT查詢填充表。熊貓函數df.to_sql()似乎不允許我定義主鍵。我可以指定一個dict'dtype'來爲每列指定數據類型,但是我找不到指定主鍵或者指定'NOT NULL'的方法。我對SQLite有一點經驗, Python,但我對PostgreSQL完全陌生。

回答

0

I think pandas is not allowing you to specify your PRIMARY KEY and other sql constraints when using to_sql().常見的解決方案似乎是創建一個使用sqlalquemy或psycopg2你的表,如

import psycopg2 
conn_string = "host=" + your_hostname + " port=" + your_port + " dbname=" + your_database + " user=" + your_uid + " password=" + your_pwd 
conn = psycopg2.connect(conn_string) 
cur = con.cursor() 

cur.execute("""CREATE TABLE table (
       uid TEXT PRIMARY KEY NOT NULL, 
       age SMALLINT NOT NULL, 
       gen TEXT  NOT NULL, 
       eth TEXT  NOT NULL, 
       and so on...);""" 
con.commit() 

然後由「INSERT INTO」查詢插入數據,或者如果你想直接通過大熊貓插入數據.to_sql()命令,那麼您需要傳遞由sqlalchemy創建的連接。

我希望這會有所幫助。

相關問題