Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
喜羊羊3508
Dak
提交
48aadb2f
D
Dak
项目概览
喜羊羊3508
/
Dak
10 个月 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Dak
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
48aadb2f
编写于
4月 27, 2008
作者:
J
Joerg Jaspert
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Rewrite (from bzed), making this script actually work correctly if the input data is a bit weird
上级
096180b2
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
77 addition
and
21 deletion
+77
-21
scripts/debian/insert_missing_changedby.py
scripts/debian/insert_missing_changedby.py
+77
-21
未找到文件。
scripts/debian/insert_missing_changedby.py
浏览文件 @
48aadb2f
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Adds yet unknown changedby fields when this column is added to an existing
# database. If everything goes well, it needs to be run only once. Data is
...
...
@@ -6,6 +7,8 @@
# merkel:/home/filippo/upload-history/*.db.
# Copyright (C) 2008 Christoph Berg <myon@debian.org>
# Copyright (C) 2008 Bernd Zeimetz <bzed@debian.org>
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
...
...
@@ -35,51 +38,104 @@ import daklib.database
import
daklib.queue
import
daklib.utils
from
pysqlite2
import
dbapi2
as
sqlite
import
pysqlite2.dbapi2
import
psycopg2
projectB
=
None
DBNAME
=
"uploads-ddc.db"
projectBdb
=
None
DBNAME
=
"uploads-queue.db"
sqliteConn
=
None
maintainer_id_cache
=
{}
###############################################################################
def
get_or_set_maintainer_id
(
maintainer
):
global
maintainer_id_cache
if
maintainer_id_cache
.
has_key
(
maintainer
):
return
maintainer_id_cache
[
maintainer
]
if
isinstance
(
maintainer
,
basestring
):
if
not
isinstance
(
maintainer
,
unicode
):
try
:
maintainer
=
unicode
(
maintainer
,
'utf-8'
)
except
:
maintainer
=
unicode
(
maintainer
,
'iso8859-15'
)
maintainer
=
maintainer
.
encode
(
'utf-8'
)
print
"%s"
%
maintainer
cursor
=
projectBdb
.
cursor
()
cursor
.
execute
(
"SELECT id FROM maintainer WHERE name=%s"
,
(
maintainer
,
))
row
=
cursor
.
fetchone
()
if
not
row
:
cursor
.
execute
(
"INSERT INTO maintainer (name) VALUES (%s)"
,
(
maintainer
,
))
cursor
.
execute
(
"SELECT id FROM maintainer WHERE name=%s"
,
(
maintainer
,
))
row
=
cursor
.
fetchone
()
maintainer_id
=
row
[
0
]
maintainer_id_cache
[
maintainer
]
=
maintainer_id
cursor
.
close
()
return
maintainer_id
def
__get_changedby__
(
package
,
version
):
cur
=
sqliteConn
.
cursor
()
cur
.
execute
(
"SELECT changedby FROM uploads WHERE package=? AND version=? LIMIT 1"
,
(
package
,
version
))
res
=
cur
.
fetchone
()
cur
.
close
()
return
res
def
insert
():
print
"Adding missing changedby fields."
projectB
.
query
(
"BEGIN WORK"
)
q
=
projectB
.
query
(
"SELECT id, source, version FROM source WHERE changedby IS NULL"
)
for
i
in
q
.
getresult
():
print
i
[
1
]
+
"/"
+
i
[
2
]
+
":"
,
cur
=
sqliteConn
.
cursor
()
cur
.
execute
(
"SELECT changedby FROM uploads WHERE package = '%s' AND version = '%s' LIMIT 1"
%
(
i
[
1
],
i
[
2
]))
res
=
cur
.
fetchall
()
if
len
(
res
)
!=
1
:
listcursor
=
projectBdb
.
cursor
()
listcursor
.
execute
(
"SELECT id, source, version FROM source WHERE changedby IS NULL"
)
row
=
listcursor
.
fetchone
()
while
row
:
print
repr
(
row
)
try
:
res
=
__get_changedby__
(
row
[
1
],
row
[
2
])
except
:
sqliteConn
.
text_factory
=
str
try
:
res
=
__get_changedby__
(
row
[
1
],
row
[
2
])
except
:
print
'FAILED SQLITE'
res
=
None
sqliteConn
.
text_factory
=
unicode
if
res
:
changedby_id
=
get_or_set_maintainer_id
(
res
[
0
])
cur
=
projectBdb
.
cursor
()
cur
.
execute
(
"UPDATE source SET changedby=%s WHERE id=%s"
%
(
changedby_id
,
row
[
0
]))
cur
.
close
()
print
changedby_id
,
"(%d)"
%
row
[
0
]
else
:
print
"nothing found"
continue
changedby
=
res
[
0
][
0
].
replace
(
"'"
,
"
\\
'"
)
changedby_id
=
daklib
.
database
.
get_or_set_maintainer_id
(
changedby
)
projectB
.
query
(
"UPDATE source SET changedby = %d WHERE id = %d"
%
(
changedby_id
,
i
[
0
]))
print
changedby
,
"(%d)"
%
changedby_id
projectB
.
query
(
"COMMIT WORK"
)
row
=
listcursor
.
fetchone
()
listcursor
.
close
()
###############################################################################
def
main
():
global
projectB
,
sqliteConn
global
projectB
,
sqliteConn
,
projectBdb
Cnf
=
daklib
.
utils
.
get_conf
()
Upload
=
daklib
.
queue
.
Upload
(
Cnf
)
projectB
=
Upload
.
projectB
projectBdb
=
psycopg2
.
connect
(
"dbname=%s"
%
Cnf
[
"DB::Name"
])
sqliteConn
=
sqlite
.
connect
(
DBNAME
)
insert
()
projectBdb
.
commit
()
projectBdb
.
close
()
###############################################################################
if
__name__
==
'__main__'
:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录