循环从键盘添加值?

时间:2018-02-01 09:15:35

标签: python psycopg2

我想创建一个脚本,作为postgres数据库的基本图形界面。我正在使用psycopg2库。我有一个创建表的函数的问题。

到目前为止,我有一个功能:

def create_table(dbname,user,password,table_name,column_name,column_type,constraint):
   conn = connect(dbname, user, password)
   cur = conn.cursor()
   cur.execute("""CREATE TABLE %s(%s %s %s)""" % (table_name,column_name,column_type,constraint))

我可以用一列创建一个表。我希望能够创建一个包含用户想要的列数的表(“table_name”,“column”name“,”column_type“,”constraint“取自键盘)。我不知道但是如何构建这样的函数。我预测它需要某种循环。

澄清一下,我想要这样的东西:

它应该在命令行中打印:

表名:(用户写,给出名称)

列名:

列类型:

约束:

它已经在我的脚本中工作

但是,我想要:

列名(再次):

列类型(再次):

约束(再次):

可以添加更多列。

1 个答案:

答案 0 :(得分:1)

您可以创建一个循环,询问用户是否每次都继续,在每次迭代中,新列的信息,即列名,类型和约束,都会附加到列列表中。

用户选择停止添加列后,您必须构建查询。可能使用新的format string语法'CREATE TABLE {} ({})'.format(table_name, columns)。我不打算在代码中拼写如何构造columns,但您可以先为每列创建一个字符串,再次使用字符串格式,然后使用逗号join。最后,columns应该如下所示:“customer_id INTEGER UNIQUE,customer_name VARCHAR(50),phone CHAR(8)”。

实现这一目标的方法可能不那么容易出错。例如,您可以检查每种类型和约束是否有效。