2016-06-13 66 views
0

我想寫一個類來創建一個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命令的方法嗎?你會傳遞多個參數給方法,但你不能?你會怎樣做? –

回答

1

真的你或許應該考慮使用像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") 
相關問題