Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 使用Python3/sqlite3创建列数未知的表_Python 3.x_Sqlite_Class - Fatal编程技术网

Python 3.x 使用Python3/sqlite3创建列数未知的表

Python 3.x 使用Python3/sqlite3创建列数未知的表,python-3.x,sqlite,class,Python 3.x,Sqlite,Class,我有一个Python类: class Database: conn = sqlite3.connect(‘database.db’) c = conn.cursor() def __init__(self): pass 在这个类中,我将使用多个方法来处理我的数据库类,例如: def create_table(self, table_name, *args): pass def add_user(self): pass def rem

我有一个Python类:

class Database:
    conn = sqlite3.connect(‘database.db’)
    c = conn.cursor()

    def __init__(self):
        pass
在这个类中,我将使用多个方法来处理我的数据库类,例如:

def create_table(self, table_name, *args):
    pass

def add_user(self):
    pass

def remove_user(self):
    pass
等等。 我的问题是:如果我不确定将有多少列,我如何在“create_table”函数中使用*args。例如,我知道我将有first、last和pay列,我的函数将如下所示:

def create_table(self, table_name, *args):
    c.execute("""CREATE TABLE ‘{}’ (‘{}’ text, ‘{}’ text, ‘{}’ 
    integer).format(self.table_name, self.first, self.last, self.pay)”””)
    c.commit()
所以,如果我想创建表,我可以这样做:

Item = Database()
Item.create_table('employees', ‘First_name’, ’Last_name’, 100000)
但是如果我不知道我会有多少列呢? 谢谢


打印(创建表格('employees','first','text','last','text','pay','integer'))

不确定列的变量有多大;或者时间框架。似乎您已经有了一组基本的定义,然后,会弹出一个新的列。所以假设你的表是从上面提到的4开始的

我们首先运行create表,然后在文件上循环,一边更新,如果我们找到一个新列,我们运行altertable tableName ADD column_name数据类型,然后根据键进行更新

或者,您可以按照qafrombayarea的建议,从开始到完成,然后立即创建表。我们的json文件没有那么严格

def create_table(self, tableName, *args,):
    columns = ''
    for i in args:
        columns += i
        columns += ' '
    message = '"""CREATE TABLE {} ({})"""'.format(tableName, columns[:-1])
    return message