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

时间:2016-06-13 02:57:04

标签: python sqlite

我正在尝试编写一个类来创建一个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的未解析参考。

无论如何我能完成这个方法吗?

由于

1 个答案:

答案 0 :(得分: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")