我正在尝试使用Python脚本将信息保存到Postgresql中的数据库。 对于更一般的解释我正在使用Rails创建WebApp,我在其中调用一个作业来运行python脚本来处理一些图像和数据,之后,我希望将它们保存到我的数据库中。
其他方面,我正在将图像上传到AWS S3,等待上传完成后再将信息保存到数据库中。
我用来上传信息的python代码如下:
# Function which connects wit postgresql and uploads into the database
#....(Asume param and model_id are known variables, which i do not post it here.)
def insert_param(param, model_id):
con = None
try:
con = psycopg2.connect("host='localhost'
dbname='app_development'
user='usr'
password=''")
wait(con)
cur = con.cursor()
cur.execute("UPDATE M_Param SET Model=%s WHERE Id=%s",(param, model_id))
con.commit()
except Exception, e:
print e
if con:
con.rollback()
print 'Error %s' % e
sys.exit(1)
finally:
if con:
con.close()
#Function which wait for the connection to the database to be ready.
def wait(conn):
while 1:
state = conn.poll()
if state == psycopg2.extensions.POLL_OK:
print "Poll Conection OK"
break
elif state == psycopg2.extensions.POLL_WRITE:
print "Poll writting"
select.select([], [conn.fileno()], [])
elif state == psycopg2.extensions.POLL_READ:
print "Poll reading"
select.select([conn.fileno()], [], [])
else:
raise psycopg2.OperationalError("poll() returned %s" % state)
#Here I call the first function
insert_count(param,model_id)
我有时会将数据上传到postgresql,这些信息没有上传的随机情况。 我尝试从数据库中提取数据然后提交,但我什么都没有,也没有从那些尝试中获得有价值的信息。
以下是我的问题:
非常欢迎任何帮助,参考或反馈。
答案 0 :(得分:0)
我发现了问题,它不在python代码中,而是在执行python脚本的方式。
当我调用python脚本时,调用解释器,但在python任务完成之前我已经再次调用脚本,这使得解释器关闭并重新打开,而不是让前一个任务完成(ergo,不是提交到数据库)。
避免此问题的一些可行方法是:
我希望这些发现可以帮助其他人和我一样。