Как показывают данные в строках вместо строки?

голоса
-2

Прямо сейчас, когда я печатаю gameuniqueteamsэто показывает , как строка. В SQL, в каждой строке новая команда добавляется в то время как я хочу , чтобы каждый , чтобы показать индивидуально. На этом этапе, gameuniqueteams покажет следующую строку

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

Я хочу, чтобы показать в строке, так что, когда я передать его в SQL каждый команда показывает в строке сам по себе.

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

Это весь мой код в случае помогает! Что мне делать?

#!/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()
Задан 24/11/2017 в 15:32
пользователем
На других языках...                            


2 ответов

голоса
0

Вот ответ на вопрос, который Вы задали:

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

Это не очевидно для меня , как это относится к коде БД. Похоже , ваши allteams назначение отступа слишком много - вы хотите , и последующая обработка произойдет после прочтения всех строк CSV. И , возможно , вы хотите перебрать for team in sorted(uniqueteams):, то data1 = (team,)и хранить , что в качестве строки БД.

Вот структура данных было бы полезно для вас, чтобы знать о: множество.

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


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

Набор будет заботиться о единственности для вас, без хлопот делать повторные запросы членства.

Ответил 24/11/2017 в 17:04
источник пользователем

голоса
0

Ваша проблема, кажется, не имеет ничего общего с базой данных или файлом, а просто с манипуляцией строки во время печати.

Некоторые из списка

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

становится строки, когда вы присоединитесь к его новой строкой

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

эти кавычки только разметить на Python, так что печать его делают те уходят.

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

Я бы сказал, что ваша структура данных является правильной в виде списка, и вы должны просто манипулировать этот список строк, чтобы получить выход, который вы ищете.

Ответил 24/11/2017 в 18:55
источник пользователем

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