我有一个难以解决的问题,我不知道该怎么做。
我想存档一些实体,然后从初始表中删除它们。问题是这些实体是连在一起的。我有一个接近工作的代码,但我认为这不是一个干净的方法。它由SQL查询组成,这些查询将带有ID的行复制到新表中。 另一个问题是我不需要存档某些字段,因此存档实体与初始实体不完全相同。 我使用原始SQL查询而不是DQL,因为我的表的大小。
我想归档这些实体:Colle,ColleQC,QC,PasserColle,Reponse,ReponseQC,StatistiqueColle,StatistiqueQuestion,RepartitionColle,RepartitionQuestion,Tuteur 至 BanqueColle,BanqueColleQC,BanqueQC,BanquePasserColle,BanqueReponse,BanqueReponseQC,BanqueStatistiqueColle,BanqueStatistiqueQuestion,BanqueRepartitionColle,BanqueRepartitionQuestion,AncienAdherent。
我会将这些存档用于我应用的另一部分。
(Tuteur和AncienAdherent扩展用户)
这是我存档的代码的一部分,但我认为这不是一个干净的方法:
#!/usr/bin/python
# coding:utf-8
import evernote.edam.type.ttypes as Types
import evernote.edam.error.ttypes as Errors
from evernote.api.client import EvernoteClient
import os
def parse_query_string(authorize_url):
uargs = authorize_url.split('?')
#vals = authorize_url.split('?')
vals = {}
if len(uargs) == 1:
raise Exception('Invalid Authorization URL')
for pair in uargs[1].split('&'):
key, value = pair.split('=', 1)
vals[key] = value
return vals
CUNSUMER_KEY = 'MY_CUNSUMER_KEY'
CUNSUMER_SECRET = 'MY_CUNSUMER_SECRET'
client = EvernoteClient(
consumer_key= CUNSUMER_KEY,
consumer_secret= CUNSUMER_SECRET,
#sandbox=True
sandbox=False
)
url = ""
if os.environ.has_key('HTTP_HOST') and os.environ.has_key('REQUEST_URI'):
url = "http://" + os.environ['HTTP_HOST'] + os.environ['REQUEST_URI']
vals = parse_query_string(url)
request_token = client.get_request_token(url)
access_token = client.get_access_token(request_token['oauth_token'],request_token['oauth_token_secret'],vals['oauth_verifier'])
print 'Content-type: text/html\n'
print """
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h1>vals</h1>
<p>After the "?" Of the current URL</p>
<p>%s</p>
<h1>vals['oauth_verifier']</h1>
<p>%s</p>
<h1>request_token</h1>
<p>%s</p>
<h1>request_token['oauth_token']</h1>
<p>%s</p>
<h1>request_token['oauth_token_secret']</h1>
<p>%s</p>
</body>
</html>
"""%(vals, vals['oauth_verifier'], request_token, request_token['oauth_token'], request_token['oauth_token_secret'])
答案 0 :(得分:0)
我最近一直在进行数据库迁移,并且发现最简单的方法(对我来说)就是在SQL中做所有事情。这有点费力,但它对我的项目来说还算可行
首先删除所有约束
# Table1.field1
ALTER TABLE Table1 DROP FOREIGN KEY FK_Table1_field1;
ALTER TABLE Table1 DROP INDEX IDX_Table1_field1;
# Table1.field2
ALTER TABLE Table1 DROP FOREIGN KEY FK_Table1_field2;
ALTER TABLE Table1 DROP INDEX IDX_Table1_field2;
然后添加所有SQL以将数据移动到新表中。
然后删除所有旧表
DROP TABLE IF EXISTS Table1;
DROP TABLE IF EXISTS Table2;
然后在
中添加所有约束ALTER TABLE Table1
ADD INDEX IDX_Table1_field1 (field1 ASC);
ALTER TABLE Table1
ADD CONSTRAINT FK_Table1_field1
FOREIGN KEY (field1)
REFERENCES OtherTable (xxxx)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
我在其自己的sql文件中保留了每一步,因此对于此示例,将有4个sql文件,如果将数据移动步骤拆分为多个文件,则可能更容易管理。 / p>