我想创建一个脚本,作为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“取自键盘)。我不知道但是如何构建这样的函数。我预测它需要某种循环。
澄清一下,我想要这样的东西:
它应该在命令行中打印:表名:(用户写,给出名称)
列名:
列类型:
约束:
它已经在我的脚本中工作
但是,我想要:
列名(再次):
列类型(再次):
约束(再次):
可以添加更多列。
答案 0 :(得分:1)
您可以创建一个循环,询问用户是否每次都继续,在每次迭代中,新列的信息,即列名,类型和约束,都会附加到列列表中。
用户选择停止添加列后,您必须构建查询。可能使用新的format string语法'CREATE TABLE {} ({})'.format(table_name, columns)
。我不打算在代码中拼写如何构造columns
,但您可以先为每列创建一个字符串,再次使用字符串格式,然后使用逗号join。最后,columns
应该如下所示:“customer_id INTEGER UNIQUE,customer_name VARCHAR(50),phone CHAR(8)”。
实现这一目标的方法可能不那么容易出错。例如,您可以检查每种类型和约束是否有效。