服务器python上出现psycopg2编程错误,但Mac python上没有

服务器python上出现psycopg2编程错误,但Mac python上没有,python,macos,python-2.7,psycopg2,Python,Macos,Python 2.7,Psycopg2,我有一个python脚本,它使用psycopg2进行一些SQL查询。在我的mac上本地测试时,一切正常。在服务器(预期目标)上运行脚本时,我从psycopg2得到一个错误: .local/lib/python2.7/site packages/psycopg2-2.5.4-py2.7-linux-x86_64.egg/psycopg2/extras.py”,执行中的第120行 返回super(DictCursor,self).execute(query,vars) psycopg2.Progra

我有一个python脚本,它使用psycopg2进行一些SQL查询。在我的mac上本地测试时,一切正常。在服务器(预期目标)上运行脚本时,我从psycopg2得到一个错误:

.local/lib/python2.7/site packages/psycopg2-2.5.4-py2.7-linux-x86_64.egg/psycopg2/extras.py”,执行中的第120行 返回super(DictCursor,self).execute(query,vars) psycopg2.ProgrammingError:位于或接近“0”的语法错误 第4行:…ice)结束(按时间顺序描述0到0之间的行)

该查询在pgadmin和我的本地计算机上运行完全正常。在所有情况下,我都使用python 2.7。以下是问题脚本:

def chart_files_price_movavg(itemname, hostname, port, dbname, username, pw):
    "itemname, db credentials"
    #creates a csv with average price per day with headers

    query = ("""SELECT time_series,
    avg_price AS daily_price,
    CASE WHEN row_number() OVER (ORDER BY time_series) > 7 
        THEN avg(avg_price) OVER (ORDER BY time_series DESC ROWS BETWEEN 0 FOLLOWING AND 6 FOLLOWING)
        ELSE NULL 
        END AS avg_price

        FROM 
    (SELECT to_char(closing_date, 'YYYY/MM/DD') AS time_series, SUM(price) / COUNT(itemname) AS avg_price
    FROM auction_prices 
    WHERE itemname = 'iphone6_16gb' AND price < 1000
    GROUP BY time_series) 
    AS foo""") % locals()

    filename = itemname + '_price_movavg.csv'

    filepath = '/home5/easypea9/public_html/downloads/' + filename
    #filepath = '/Users/Ali Mac Pro/Google Drive/Auto-Stock-Analysis/Python/Web Scraping/eBay/chartdata/' + filename

    copy_select(query, filepath, hostname, port, dbname, username, pw)

PostgreSQL server是什么版本?9.0中添加了
以下的
语法。比较和服务器上的.8.4.20版本和本地9.4版本可能是问题的根源。因此,PostgreSQL server主机只需向升级到9.4版收取300美元,因此我现在正在寻找有关转换SQL查询的帮助,因此我现在正在寻找有关转换SQL查询的帮助t与版本8兼容。我一开始写这个查询就已经超出了我的舒适区!所以真的很感激你有什么想法吗?我建议你升级到9.4。这很难(如果不是不可能的话)使用8.4进行移动平均值计算,这就是他们在
语法之后添加
之前
/
的全部原因。您可以尝试发布一个单独的问题。或者,您可以尝试在Python中实现移动平均值,但这超出了本问题的范围。
def copy_select(query, filename, hostname, port,  dbname, user, password):
    'query, outputfile, hostname, port, dbname, user, password'

    #global cur

    try:
        connection = psycopg2.connect(

            database=dbname,
            user=user,
            host=hostname,
            password=password)

        connection.autocommit = True
        cur = connection.cursor(cursor_factory=psycopg2.extras.DictCursor)

    except:

        print 'database connection FAIL'


    ticquery = datetime.now()

    cur.execute(query)
    rows = cur.fetchall()

    tocquery = datetime.now()
    querytime = tocquery - ticquery

    #write the csv
    openfile = open(filename, 'wb')
    csvwriter = csv.writer(openfile)
    csvwriter.writerows(rows)
    openfile.close()


    return rows