簡體   English   中英

python將數據插入sqlite3表

[英]python insert data into sqlite3 table

我正在使用 python 3.7 和 sqlite3 將數據寫入我的數據庫。 我有這個功能

def add_item(self, item):
    stmt = "INSERT INTO users (id) VALUES (?)"
    args = (item,)
    self.conn.execute(stmt, args)
    self.conn.commit()

它工作正常,但它只允許我將數據寫入 id 列。 我怎樣才能使這個函數動態化,以便我可以向任何列添加任何數據?

# new variable to specify column to write to

def add_item(self, item, column):
    stmt = "INSERT INTO users (column) VALUES (?)"
    args = (item,)
    self.conn.execute(stmt, args)
    self.conn.commit()

您需要根據提供的列和值列表的長度動態構建列名稱和值占位符列表。

這可以使用str.join完成,但是您可能需要處理調用者將單個字符串作為列名和單個值傳遞的情況。

def add_item(self, values, columns):
    # Check for single column insert
    if isinstance(columns, str):
        values, columns = (values,), (columns,)
    assert len(values) == len(columns), 'Mismatch between values and columns'

    template = """INSERT INTO users ({}) VALUES ({})"""

    cols = ','.join([f'"{col}"' for col in columns])
    placeholders = ','.join(['?'] * len(values))
    stmt = template.format(cols, placeholders)

    self.conn.execute(stmt, values)
    self.conn.commit()
    return

暫無
暫無

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

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