Come mostrare i dati in righe invece di stringa?

voti
-2

In questo momento, quando stampo gameuniqueteamsmostra come una stringa. Su SQL, ad ogni riga una nuova squadra viene aggiunto mentre voglio che ciascuno di mostrare singolarmente. In questa fase, gameuniqueteams mostreranno la seguente stringa

 ['Arsenal', 'Bournemouth', 'Brighton', 'Burnley', 'Chelsea']

Voglio che mostrare per ogni riga in modo che quando mi trasferisco a SQL ciascuno spettacoli del team di fila per sé.

['Arsenal']
['Bournemouth']
['Brighton']
['Burnley']
['Chelsea']

Questo è tutto il mio codice in caso aiuta! Cosa dovrei fare?

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys
import csv
from itertools import count, cycle
from _tkinter import create
from setuptools.dist import sequence
from email.policy import default
path = r'C:\Users\sammy\Downloads\E0.csv'
with open(path, r) as csvfile:
    readCSV = csv.reader(csvfile, delimiter=,)
    firstline = 1
    con = None
    con = psycopg2.connect(host='localhost' dbname='football' user='postgres' password='XXX')   
    cur = con.cursor()
    cur.execute(DROP TABLE teams)
    cur.execute(CREATE TABLE teams (HomeTeamID SERIAL PRIMARY KEY, AllTeams123 VARCHAR))

    hometeams = []
    awayteams = []
    uniqueteams = []
    allteams = []
    gameuniqueteams = []    
    try:
        for row in readCSV:
            if firstline:
                firstline=0
                continue
            HomeTeam = row[2]
            AwayTeam = row[3]
            hometeams.append(HomeTeam)
            awayteams.append(AwayTeam)
            allteams = hometeams + awayteams
            for x in allteams:
                if x not in uniqueteams:
                    uniqueteams.append(x)
            gameuniqueteams = sorted(uniqueteams)
            for x in gameuniqueteams:
                print (x)
            gameuniqueteams = (x)
            data1 = (gameuniqueteams,)
            query1 = INSERT IGNORE  INTO teams (AllTeams123) VALUES (%s);
            cursor = con.cursor()
            cursor.execute(query1, data1)



    except psycopg2.DatabaseError as e:
        if con:
            con.rollback() 
            print (Error %s % e, e)
            sys.exit(1) 
    finally:
        if con:
            con.commit()
            con.close()
È pubblicato 24/11/2017 alle 15:32
dall'utente
In altre lingue...                            


2 risposte

voti
0

Ecco la risposta alla domanda che hai chiesto:

import pprint

teams = ['Arsenal', 'Bournemouth', 'Brighton', 'Burnley', 'Chelsea']
for team in teams:
    print([team])

teams1 = [[team]
          for team in teams[:3]]
print(teams1)
pprint.pprint(teams1, width=1)
pprint.pprint(teams, width=1)

['Arsenal']
['Bournemouth']
['Brighton']
['Burnley']
['Chelsea']
[['Arsenal'], ['Bournemouth'], ['Brighton']]
[['Arsenal'],
 ['Bournemouth'],
 ['Brighton']]
['Arsenal',
 'Bournemouth',
 'Brighton',
 'Burnley',
 'Chelsea']

Non è ovvio per me come che si riferisce al codice DB. Sembra che la tua allteams assegnazione è rientrato troppo - si vuole che e la successiva elaborazione avvenga dopo aver letto tutte le righe CSV. E forse si vuole iterare for team in sorted(uniqueteams):, poi data1 = (team,), e memorizzare che come una riga DB.

Ecco un datastructure sarebbe utile per voi di conoscere: il set.

unique_teams = set(['Bournemouth', 'Brighton', 'Brighton'])
unique_teams.add('Burnley')
print(unique_teams)


{'Bournemouth', 'Burnley', 'Brighton'}

Il set si prenderà cura di unicità per voi, senza il fastidio di fare query di appartenenza ripetuti.

Risposto il 24/11/2017 a 17:04
fonte dall'utente

voti
0

Il tuo problema sembra avere nulla a che fare con il database o il file, ma semplicemente con la manipolazione di stringhe durante la stampa.

alcuni lista

foo = ["some", "words", "go", "here"]

diventa righe quando si uniscono facendo a capo

>>> "\n".join(foo)
"""some
words
go
here"""

quelle virgolette sono solo markup da Python, quindi stamparlo rende coloro andare via.

>>> print("\n".join(foo))
some
words
go
here

Direi che la struttura dei dati è corretta come una lista, e si dovrebbe solo manipolare quella lista di stringhe per ottenere il risultato che stai cercando.

Risposto il 24/11/2017 a 18:55
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more