如何编写一个方法来在python中创建sqlite表

问题描述:

我想写一个类来创建一个sqlite表,因为我必须为这个任务创建相当多的表。如何编写一个方法来在python中创建sqlite表

这是我试图接近:

def connect_database(database_name): 
    table_connect = lite.connect(database_name) 
    print "connected successfully" 
    return table_connect 


def create_table(name_of_table, *argument_name, *argument_type): 

    # create_user = user_table.cursor() 
    # create_user.execute("Drop table if EXISTS user_table") 
    # create_user.execute('create table user_table(user_id INT, user_name VARCHAR)') 
    # create_user.close() 

    table_create = name_of_table.cursor() 
    table_create.execute("drop table if exists name_of_table") 
    table_create.execute(''' 
    create table name_of_table(
     argument_name argument_type 
     argument_name name_of_table 
    ) 
    ''') 

    print "create table successfully" 

    table_create.close() 

example = connect_database('example.db') 
create_table(example, water, FLOAT) 

我是不是能够传递多个argument_names,或方法传递argument_type的问题。

此外,该程序返回未解决的水和FLOAT的参考。

有没有方法可以完成该方法?

感谢

+0

提示:正确格式的代码[编辑]你的问题并选择其 –

+0

和你的未解决的引用错误并不意味着赞同你所示的代码后,任何使用'{}'按钮。你可以阅读关于[mcve]的更多信息 –

+0

你想写一个执行SQL命令的方法吗?你会传递多个参数给方法,但你不能?你会怎样做? –

真的你或许应该考虑使用像SQLAlchemy的ORM的...编写自己的数据库抽象的基础上,你目前的技能水平可能是一个灾难,但是如果你真的必须尝试类似这

def create_table_string(table_name,*fields): 
    return "CREATE TABLE {table_name} ({fields})".format(table_name=table_name, 
                 fields=",".join(fields)) 

def create_table(cursor,name_of_table, *fields): 
    sql = create_table_string(table_name,*fields) 
    print "SQL:",sql 
    cursor.executescript(sql) 

db = sqlite3.connect(my_database) 
create_table(db.cursor(),"a_table","Field1 INT","Field2 String","Field3 PRIMARY KEY INTEGER")