远程.db文件不会更改

时间:2015-12-25 12:48:49

标签: python database git sqlite openshift

我正在使用Cyclone在OpenShift上开发应用程序。

该应用程序使用sqlite3连接到.db文件并进行更改。

script_dir = os.path.dirname(__file__)
rel_path = "database/main.db"
database = sqlite3.connect(os.path.join(script_dir, rel_path), timeout=1)
database.row_factory = sqlite3.Row
db = database.cursor()

def closegame(id):
    db.execute("UPDATE games SET Running = 'No' WHERE ID = ?", (id,))
    database.commit()
  • 当我用

    下载文件时
    rhc scp appname download mylocation remotelocation
    

    没有变化。

  • 当我尝试git fetch / merge / pull时,它已经是最新版了。

  • 当我重新启动应用程序时,结果是相同的 应用程序仍在使用.db

  • 的更新版本
  • 当我git push时,文件被我的本地文件覆盖

  • 将.path / database / main.db添加到.gitignore仍会覆盖文件

  • git rm --cached完全从远程删除文件,因此应用程序甚至无法启动

  • git update-index --assume-changed无效

理想情况下,我喜欢这个文件永远不会被push覆盖,但是能够通过pull下载它。如果那是不可能的,只要能够拉它就会很好。

1 个答案:

答案 0 :(得分:1)

问题是我对git缺乏了解。 Git应该用于源文件,而不是用于实际数据。因此,我们应该在需要时通过scp

下载数据库

在Openshift中,可以在app-root / repo /

中找到工作的.db文件

因此控制台中的最终命令是

#-*- coding: utf-8 -*-
import urllib2,urllib
import re
import os
import sys

value=[]
url='https://www.youtube.com/feeds/videos.xmlchannel_id=UCHXdylbsyDVN4UO2Fv8Cgm&API'
req = urllib2.Request(url)
req.add_header('User-Agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.75.14 (KHTML,like Gecko) Version/7.0.3 Safari/573.75.14')
response = urllib2.urlopen(req)
link=response.read()
response.close()
match=re.compile('<entry>\n  <id>.+?</id>\n  <yt:videoId>(.+?)</yt:videoId>\n  <yt:channelId>.+?</yt:channelId>\n  <title>(.*?)\(HD\)</title>').findall(link)
for videoid,isim in match:
    #print videoid,isim

    name='#EXTINF:-1 ,'+isim+'\n'
    link='plugin://plugin.video.youtube/play/?video_id='+videoid+'\n'
    value.append((str(name), str(link)))   

    for name,link in value:
        #print name,link
        with open('C:\\Users\\dir\\Desktop\\muhtesem_yuzyil_kosem.m3u', 'wb+') as f:
            f.write(name)
            f.write(link)
            f.seek(0)  # Important: return to the top of the file before reading, otherwise you'll just read an empty string
            data = f.read() # Returns 'somedata\n'
            f.flush()
            f.close()