使用Python循环从列表创建SQL数据库

时间:2016-06-30 08:08:22

标签: python python-3.x sqlite

使用Python 3和sqlite3我希望基于不同数量的列(从列表中)在循环中创建多个数据库。

这是我的代码:

# Main loop here

# Initialize lists to populate - including SQL Primary auto-increment key 
parameter_hdrs = ['a INTEGER PRIMARY KEY']
parameter_defaults = ['NULL']

# 2nd Loop here to read a file and populate list with column headers and drop into 'parameter_hdrs' list
# 2nd Loop also here to gather some 'default' values and drop into 'parameter_defaults' list

conn = sqlite3.connect(name+".db")
cursor = conn.cursor()
my_id = 'tablename' # created each time from loop

# Attempt at creating new database using columns in parameter_hdrs list 
try:
    hdr_string = ', '.join('?' * len(parameter_hdrs))
    query_string = "CREATE TABLE "+my_id+" (%s);"  parameter_hdrs
    print(query_string)
    cursor.execute(query_string)
except sqlite3.OperationalError:
    print('Database already exists')

# Attempt to add values from 'parameter_defaults' list to above database
val_string = ', '.join('?' * len(parameter_defaults))
val_query_string = "INSERT INTO "+my_id+" VALUES (%s);" % val_string
cursor.execute(val_query_string, parameter_defaults)

# Continues Main loop

当我运行脚本时,我得到以下输出(还包括打印的query_string):

Traceback (most recent call last):
CREATE TABLE tablename (?, ?, ?, ?, ?, ?, ?); # query_string here
File "C:/myscript.py", line 72, in <module>
cursor.execute(val_query_string, parameter_defaults)
    sqlite3.OperationalError: no such table: tablename

我可以看到数据库已创建,但“插入到”部分似乎不喜欢或识别“创建表”部分中的表名。

任何解决这个问题的指针都会很棒,谢谢。

0 个答案:

没有答案