![](/img/trans.png)
[英]How to create primary and foreign keys in SQL when using sqlite3 for 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.