1
这是我的代码:Psycopg2不commiting改变
conn = psycopg2.connect("dbname='%s' user='%s' host='%s' password='%s' port='%s'" % (db, user, server, password, port))
cursor = conn.cursor()
cursor.execute("UPDATE bazos_ads SET price = replace(price, 'Zadarmo', '-5')")
cursor.execute("UPDATE bazos_ads SET price = replace(price, 'Nerozhoduje', '-4')")
cursor.execute("UPDATE bazos_ads SET price = replace(price, 'Ponúknite', '-3')")
cursor.execute("UPDATE bazos_ads SET price = replace(price, 'Dohodou', '-2')")
cursor.execute("UPDATE bazos_ads SET price = replace(price, 'V texte', '-1')")
cursor.execute("UPDATE bazos_ads SET price = replace(price, '€', '')")
cursor.execute("UPDATE bazos_ads SET price = replace(price, ' ', '')")
cursor.execute("TRUNCATE infinity_ads")
conn.commit()
cursor.execute('INSERT INTO infinity_ads (site,category,link,number,image,title,info,price,date,locality) SELECT site,category,link,number::integer,image,title,info,price::integer,date::date,locality FROM bazos_ads')
cursor.execute("TRUNCATE bazos_ads")
conn.commit()
conn.close()
我需要修改与TextField的数据库列,以便我能够将它们复制到第二个数据库,指定列类型(Integrer在这种情况下)。如果我复制这些SQL并在PSQL中逐一运行,它就可以工作。但是,如果我尝试运行在python这个代码,我得到这个错误messagge:
psycopg2.DataError: invalid input syntax for integer: "6€"
所以我想psycopg2不commiting变化或者没有与替换€符号另一个问题,但我无法弄清楚,因为在PSQL它工作正常。
编辑:我仍然无法找到解决办法,但至少这项工作:
#!/bin/bash
psql -U name-d pass-c "UPDATE bazos_ads SET price = replace(price, 'Zadarmo', '-5')"
...