【问题标题】:create sequence on pydev for postgres database在 pydev 上为 postgres 数据库创建序列
【发布时间】:2017-11-22 20:42:09
【问题描述】:

我正在尝试在“GameID”列下生成从 90001 到 90150(1 的增量)的随机数,并在游戏表中生成它。我该怎么办?我听说一个序列可能会起作用,但我不确定它是如何起作用的。有什么想法吗?

#!/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
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 games")
    cur.execute("DROP TABLE teams")
    cur.execute("DROP TABLE referees")
    cur.execute("CREATE TABLE games (HomeTeamID VARCHAR, HomeTeam VARCHAR, AwayTeamID VARCHAR, AwayTeam VARCHAR, FTHG INTEGER, ATHG INTEGER, FTR VARCHAR, RefereeID VARCHAR, RefereeName VARCHAR, HY INTEGER, AY INTEGER)")
    cur.execute("CREATE TABLE teams (HomeTeamID VARCHAR, HomeTeam VARCHAR, AwayTeamID VARCHAR, AwayTeam VARCHAR)")
    cur.execute("CREATE TABLE Referees (RefereeID VARCHAR, RefereeName VARCHAR)")
    create sequence sq_demo
    start with 10001
    increment by 1
    maxvalue 15000
    minvalue 10001
    cache 3
    cycle
    order;

    try:
        for row in readCSV:
            if firstline:
                firstline=0
                continue 
            HomeTeamID = row[2]
            HomeTeam = row[2]
            AwayTeamID = row[3]
            AwayTeam = row[3]
            FTHG = row[4]
            ATHG = row[5]
            FTR = row[6]
            RefereeID = row[10]
            RefereeName = row[10]
            HY = row[19]
            AY = row[20]
            data1 = (HomeTeamID, HomeTeam, AwayTeamID, AwayTeam, FTHG, ATHG, FTR, RefereeID, RefereeName, HY, AY)
            data2 = (HomeTeamID, HomeTeam, AwayTeamID, AwayTeam)
            data3 = (RefereeID, RefereeName)
            query1 = "INSERT INTO games (HomeTeamID , HomeTeam, AwayTeamID, AwayTeam, FTHG, ATHG, FTR, RefereeID, RefereeName, HY, AY) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s);"
            query2 = "INSERT INTO teams (HomeTeamID , HomeTeam, AwayTeamID, AwayTeam) VALUES (%s, %s, %s, %s);"
            query3 = "INSERT INTO Referees (RefereeID, RefereeName) VALUES (%s, %s);"
            print(HomeTeam)
            print(AwayTeam)
            print (FTHG)
            print (ATHG)
            print (FTR)
            print (RefereeID)
            print (RefereeName)
            print (HY)
            print (AY)
            cursor = con.cursor()
            cursor.execute(query1, data1)
            cursor.execute(query2, data2)
            cursor.execute(query3, data3)
    except psycopg2.DatabaseError as e:
        if con:
            con.rollback() 
            print ("Error %s % e", e)
            sys.exit(1) 
    finally:
        if con:
            con.commit()
            con.close()

print(" ".join(row))
out=open("new_data.csv", "w")
output = csv.writer(out)

for row in data1:
    output.writerow(row)

out.close()

【问题讨论】:

    标签: python eclipse postgresql pydev pgadmin-4


    【解决方案1】:

    我正在尝试生成从 90001 到 90150 的随机数(增量 一)在“GameID”列下并在游戏中生成 表

    这里看起来不需要序列。 你可以运行这个查询:

    select i from generate_series(90001, 90150) as x(i) order by random()
    

    并在循环中插入的每个游戏中从中选择一个结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-02
      • 2021-06-05
      • 2019-05-19
      • 2014-01-15
      • 1970-01-01
      • 1970-01-01
      • 2014-06-16
      • 2012-02-17
      相关资源
      最近更新 更多