【发布时间】:2014-11-28 16:47:26
【问题描述】:
我试图弄清楚如何在不需要像这样的琐碎语法的情况下将值元组插入到预定义的表中:
cur.execute("INSERT INTO test (num, data) VALUES (%s, %s)",
... (100, "abc'def"))
因为我的元组具有正确的值序列,如下所示:
my_tuple = ('D', 'Z107383320', '99501', '995013688', None, '36', '88', '36', '88', 'A', 'F', 'C083', '', 'BARROW', 'ST', '', '0000000605', '0000000605', 'O', 'DOCTORS COLLECTIONS SVC', 'STE', '00000001', '00000001', 'O', 'B', '', '', '020312', 'AK', '020', 'AL', '', '', 'Z10014', 'zip4mst9')
我想知道一些简单的解决方案 :-) 比如:
cur.execute("INSERT INTO test (*) VALUES (*)",
... (my_tuple))
由于我创建了表模式并且元组具有相同的属性序列,我想这是可以做到的,而无需将所有参数一一传递给 cur.execute()
【问题讨论】:
-
当您向表中添加新列时,指定列的重点并没有中断所有查询。也就是说,如果你喜欢偷懒,你应该考虑使用 ORM,比如 SQLAlchemy。另外,不要把括号放在
(my_tuple)周围——它们什么都不做(你已经有一个元组,而且元组是由逗号而不是括号创建的)
标签: python postgresql psycopg2