如何指定表的主键?如果使用标准SQL执行此操作,我将使用:
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查询填充表。 Pandas函数df.to_sql()似乎不允许我定义主键。我可以指定一个字典' dtype'指定每列的数据类型,但我找不到指定主键的方法,或指定' NOT NULL'
我对使用Python的SQLite有一些经验,但我对PostgreSQL来说是全新的。
答案 0 :(得分:-1)
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"插入数据查询,或者如果要通过pandas.to_sql()命令直接插入数据,则需要传递由sqlalchemy创建的连接。
我希望这会有所帮助。