ethereal_r...@hotmail.com wrote: > Hello, I'm working with PostgreSQL and Python to obtain 2 columns froma > database and need to print it in a specific format. > > Here is my current code. > > > > #!/usr/bin/python > # -*- coding: utf-8 -*- > > import psycopg2 > import sys > > con = None > > try: > > con = psycopg2.connect(database='DB', user='ME', password='1234') > > cur = con.cursor() > cur.execute(" select Account_Invoice.amount_untaxed, right > (Res_Partner.vat,length(Res_Partner.vat)-2) as RFC from > Account_Invoice inner join Res_Partner on Account_Invoice.partner_id = > Res_Partner.id inner join Account_Invoice_Tax on Account_Invoice.id = > Account_Invoice_Tax.invoice_id where account_invoice.journal_id=2 and > account_invoice.date_invoice >= '2013-01-01' and > account_invoice.date_invoice <= '2013-02-01' and > account_invoice.reconciled is TRUE and account_invoice_tax.account_id > = 3237 and account_invoice.amount_tax >= 0;") > > rows = cur.fetchall() > > for row in rows: > print row > > > except psycopg2.DatabaseError, e: > print 'Error %s' % e > sys.exit(1) > > > finally: > > if con: > con.close() > > > > > Now assume that fetchall would print the following: > > LOEL910624ND5 from the column vat as RFC. > 227 from the column amount_untaxed. > > > Now I would need to print that in the following format. > > 04|85|LOEL910624ND5|||||227||||||||||||||| > > 04 always goes in the first column and 85 always goes in the second, vat > goes in the third and the amount_untaxed goes in the eight column but we > still need to have 22 columns in total.
Keep it simple: COLUMN_COUNT = 22 TEMPLATE = "04|85|{0}|||||{1}|||||||||||||||" assert TEMPLATE.count("|") == COLUMN_COUNT -1, "You cannot count ;)" for row in cur.fetchall(): print TEMPLATE.format(*row) A bit more general: fill_rows(rows): out_row = [""] * 22 out_row[0] = "04" out_row[1] = "85" for row in rows: out_row[2], out_row[7] = row # copying not necessary here, but let's play it safe yield out_row[:] writer = csv.writer(sys.stdout, delimiter="|") writer.writerows(fill_rows(cur.fetchall())) All untested code. -- http://mail.python.org/mailman/listinfo/python-list