簡體   English   中英

Python MySQLdb cursor.execute()插入不同數量的值

[英]Python MySQLdb cursor.execute() insert with varying number of values

有人提出了類似的問題,但所有問題都得到解決,例如“ 一個”僅處理指定數量的值。

例如,我嘗試通過以下方式執行此操作:

def insert_values(table, columns, values, database):
    """
    columns - a string representing tuple with corresponding columns
    values - a tuple containing values
    """
    query=database.cursor()
    query.execute("INSERT INTO `{}` {} VALUES{}".format(table,columns,str(values))) 

但這並不好-盡管插入最初看起來不錯(可以接受並提交到數據庫),但是很快就出現了數據類型錯誤,這是由於將所有數據類型都轉換為字符串引起的。 例如:

c.execute("SELECT * FROM foo WHERE bar = %s AND baz = %s", (param1, param2))

我的最初方法還涉及到預先轉換日期時間對象,這可能不是MySQLdb的創建者所想到的。

我在其他MySQLdb示例中看到的方式涉及字符串插值,但這意味着將定義數量的變量定義為'%s',並且沒有給代碼帶來靈活性。

我如何定義一個方法,該方法可以接受與MySQLdb兼容的任意的,以前未定義的值? 可能嗎? 還是我缺少有關字符串插值的東西?

我想到的方法的示例用法:

兩個數據庫:source_db,destination_db

row = source_db.cursor.execute('SELECT x from Y where z='1')

(返回元組)

insert_values('table_name','(column_name_1,column_name_2)',row, destination_db)

您應該使用字符串插值為內容生成占位符,然后允許DB-API填充它們。 例如:

placeholders = ','.join('%s' for col in columns)
query_string = "INSERT INTO `{}` {} VALUES ({})".format(table, columns, placeholders)
query.execute(query_string, values)

暫無
暫無

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

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