簡體   English   中英

SQLite 和 python - 無法設置主鍵

[英]SQLite and python - can't set primary keys

我正在嘗試使用 python 創建表,但是當我檢查 SQLite 中的數據結構時,沒有分配主鍵。 這是其中一張表的代碼。 除了主鍵部分外,它似乎按預期工作。 我是 Python 和 SQLite 的新手,所以我可能遺漏了一些非常明顯的東西,但找不到任何答案。

# Create a database and connect
conn = sql.connect('Coursework.db')
c = conn.cursor()

# Create the tables from the normalised schema
c.execute('CREATE TABLE IF NOT EXISTS room_host (room_ID integer PRIMARY KEY, host_ID integer)')


c.execute("SELECT count(name) from sqlite_master WHERE type='table' AND name='room_host'")
if c.fetchone()[0] == 1:
    c.execute("DROP TABLE room_host")
else:
    c.execute('CREATE TABLE room_host (room_ID integer PRIMARY KEY, host_ID integer)')

conn.commit()

# read data from csv

read_listings = pd.read_csv('listings.csv')
room_host = pd.DataFrame(read_listings, columns=['id', 'host_id'])
room_host.set_index('id')
room_host.to_sql("room_host", conn, if_exists='append', index=False)

c.execute("""INSERT INTO room_host (id, host_ID)
SELECT room_host.id, room_host.host_ID
FROM room_host
""")

我無法重新處理主鍵的問題,當我運行 SQL 語句時,該表已按預期創建。

除此之外,通過 Pandas 的迂回並不是真正必要的, csv模塊加上.executemany()在我看來是一種更直接的方式將數據從 ZCC8D68C551C4A9A6D5313E07DE4DE 加載到表中。

import csv
import sqlite3 as sql

conn = sql.connect('Coursework.db')

conn.executescript('CREATE TABLE IF NOT EXISTS room_host (room_ID integer PRIMARY KEY, host_ID integer)')
conn.commit()

with open('listings.csv', encoding='utf8', newline='') as f:
    reader = csv.reader(f, delimiter=',')
    conn.executemany('INSERT INTO room_host (room_ID, host_ID) VALUES (?, ?)', reader)
    conn.commit()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM