Comment afficher des données en ligne, au lieu de chaîne?

voix
-2

En ce moment, quand j'imprime gameuniqueteamsle montre comme une chaîne. Sur SQL, à chaque ligne une nouvelle équipe est ajouté pendant que je veux que chacun de montrer individuellement. A ce stade, gameuniqueteams montreront la chaîne suivante

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

Je veux montrer par ligne de sorte que lorsque je transfère à sql chaque équipe montre une ligne par lui-même.

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

Ceci est mon code entier dans le cas où il aide! Que devrais-je faire?

#!/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()
Créé 24/11/2017 à 15:32
utilisateur
Dans d'autres langues...                            


2 réponses

voix
0

Voici la réponse à la question que vous avez posée:

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']

Ce n'est pas évident pour moi comment cela se rapporte à votre code de DB. Il semble que votre affectation allteams est en retrait trop - vous voulez que le traitement ultérieur et de se produire après la lecture de toutes les lignes CSV. Et peut - être vous voulez itérer for team in sorted(uniqueteams):, puis data1 = (team,), et stocker que comme une ligne DB.

Voici une structure de données, il serait utile que vous sachiez: l'ensemble.

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


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

L'ensemble prendra soin de l'unicité pour vous, sans les tracas de faire des requêtes répétées membres.

Créé 24/11/2017 à 17:04
source utilisateur

voix
0

Votre problème semble avoir rien à voir avec la base de données ou le fichier, mais simplement avec la manipulation de chaînes lors de l'impression.

certains liste

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

devient des lignes lorsque vous rejoignez par les nouvelles lignes

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

les guillemets sont balisage juste en Python, l'imprimer fait les aller.

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

Je dirais que votre structure de données est correcte comme une liste, et vous devriez simplement manipuler cette liste de chaînes pour obtenir la sortie que vous recherchez.

Créé 24/11/2017 à 18:55
source utilisateur

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