gpt4 book ai didi

sql - Python 中的动态 INSERT 语句

转载 作者:IT王子 更新时间:2023-10-29 06:23:57 24 4
gpt4 key购买 nike

我正在努力更新一些我一直在使用的 Python 代码,并且正在寻找一些关于处理我正在使用的想法的最佳方法的建议。我希望更改的代码部分是:

my_reader = csv.reader(input, delimiter = ',',quotechar='|')
mouse.executemany("INSERT INTO Example_Input (ID,Name,Job,Salary) VALUES (?,?,?,?)", my_reader)

代码有效。我的问题是,我可以将“(?,?,?,?)”更改为更动态的内容,例如“range()”以允许用户输入。我知道我还必须有一个动态创建表语句,所以另一种解决方案可能是计算输入的数量。

更清楚一点:例如,如果我有 raw_input("How many variables does the table contained?: ") 并且输入是 2,程序会知道像 (?,?) 一样运行。

想法?

(我也在使用 SQLite3 和 python 2.7)

最佳答案

假设您的 csv 有一个标题字段,您可以使用 DictReader并生成其字段名称和参数 fieldnames属性(property)。

DictReader 的构造函数允许您指定字段名(如果它们不在文件中),因此您可以在需要时向用户询问该信息。

假设标题在文件中,这个示例代码应该可以工作:

import csv
import sqlite3

#Give the table a name and use it for the file as well
table_name = 'Example'
a = open(table_name + '.csv', 'r')

#Use a dict reader
my_reader = csv.DictReader(a)
print my_reader.fieldnames # Use this to create table and get number of field values,etc.

# create statement
create_sql = 'CREATE TABLE ' + table_name + '(' + ','.join(my_reader.fieldnames) + ')'
print create_sql

#open the db
conn = sqlite3.connect('example.db')
c = conn.cursor()
# Create table using field names
c.execute(create_sql)
insert_sql = 'insert into ' + table_name + ' (' + ','.join(my_reader.fieldnames) + ') VALUES (' + ','.join(['?'] * len(my_reader.fieldnames))+ ')'
print insert_sql

values = []
for row in my_reader:
row_values = []
for field in my_reader.fieldnames:
row_values.append(row[field])
values.append(row_values)

c.executemany(insert_sql, values)

关于sql - Python 中的动态 INSERT 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21140590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com