亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 002_project_names_per_user.py

?? 在線編輯器
?? PY
字號:
from datetime import datetimefrom sqlalchemy import *from migrate import *from migrate.changeset import *from sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy.orm import relation, deferred, mapper, backrefBase = declarative_base()Base.metadata.bind = migrate_enginemigrate_engine.echo = Trueclass File(Base):    __tablename__ = "files"        id = Column(Integer, primary_key=True)    name = Column(String(700), nullable=False)    created = Column(DateTime, default=datetime.now)    modified = Column(DateTime, onupdate=datetime.now)    saved_size = Column(Integer)    data = deferred(Column(Binary))    edits = deferred(Column(PickleType))    dir_id = Column(Integer, ForeignKey('directories.id'))    dir = relation('Directory', backref="files")    class Directory(Base):    __tablename__ = "directories"        id = Column(Integer, primary_key=True)    name = Column(String(700), nullable=False)    parent_id = Column(Integer, ForeignKey('directories.id'))    subdirs = relation('Directory', backref=backref("parent",                                         remote_side=[id]))    class Project(Base):    __tablename__ = "projects"        id = Column(Integer, primary_key=True)    name = Column(String(60), nullable=False)    user_id = Column(Integer, ForeignKey('users.id'), nullable=False)    file_table = File.__table__directory_table = Directory.__table__project_table = Project.__table__def upgrade():    # Upgrade operations go here. Don't create your own engine; use the engine    # named 'migrate_engine' imported from migrate.    if migrate_engine.name == "sqlite":        import sys        print "sqlite development databases are not supported by this migration"        print "In other words, you need to recreate your development database."        print "Sorry! To create your database, run"        print "bin/paver create_db"        sys.exit(1)        file_project_id = Column('project_id', Integer, ForeignKey('projects.id', ondelete='cascade'))    directory_project_id = Column('project_id', Integer, ForeignKey('projects.id', ondelete='cascade'))        file_project_id.create(file_table)    directory_project_id.create(directory_table)    conn = migrate_engine.connect()    conn.execute("ALTER TABLE files DROP INDEX name")    conn.execute("ALTER TABLE directories DROP INDEX name")    conn.execute("ALTER TABLE projects DROP INDEX name")    conn.execute("ALTER TABLE files DROP FOREIGN KEY files_ibfk_1")    conn.execute("""ALTER TABLE files        ADD CONSTRAINT files_ibfk_1        FOREIGN KEY (dir_id)        REFERENCES directories(id)        ON DELETE CASCADE    """)    conn.execute("ALTER TABLE directories DROP FOREIGN KEY directories_ibfk_1")    conn.execute("""ALTER TABLE directories        ADD CONSTRAINT directories_ibfk_1        FOREIGN KEY (parent_id)        REFERENCES directories(id)        ON DELETE CASCADE    """)    conn.execute("ALTER TABLE filestatus DROP FOREIGN KEY filestatus_ibfk_1")    conn.execute("""ALTER TABLE filestatus        ADD CONSTRAINT filestatus_ibfk_1        FOREIGN KEY (user_id)        REFERENCES users(id)        ON DELETE CASCADE    """)    conn.execute("ALTER TABLE filestatus DROP FOREIGN KEY filestatus_ibfk_2")    conn.execute("""ALTER TABLE filestatus        ADD CONSTRAINT filestatus_ibfk_2        FOREIGN KEY (file_id)        REFERENCES files(id)        ON DELETE CASCADE    """)    conn.execute("ALTER TABLE members DROP FOREIGN KEY members_ibfk_1")    conn.execute("""ALTER TABLE members        ADD CONSTRAINT members_ibfk_1        FOREIGN KEY (project_id)        REFERENCES projects(id)        ON DELETE CASCADE    """)    conn.execute("ALTER TABLE members DROP FOREIGN KEY members_ibfk_2")    conn.execute("""ALTER TABLE members        ADD CONSTRAINT members_ibfk_2        FOREIGN KEY (user_id)        REFERENCES users(id)        ON DELETE CASCADE    """)    conn.execute("DELETE FROM projects WHERE user_id IS NULL OR user_id=0")        migrate_engine.echo = False    transaction = conn.begin()    result = select([func.count(file_table.c.id)]).execute().fetchall()    num_files = result[0][0]    try:        current_project_name = None        current_project_id = None        delete_these = set()        counter = 0        for file_obj in select([file_table.c.id,                file_table.c.name]).order_by(file_table.c.name).execute():            counter += 1            if counter % 500 == 0:                print "%s out of %s (%5.2f%%)" % (counter, num_files,                    float(counter)*100/num_files)            project_name, path = file_obj.name.split('/', 1)                        if project_name != current_project_name:                current_project_name = project_name                result = select([project_table.c.id]) \                    .where(project_table.c.name==project_name).execute()                try:                    result = iter(result).next()                    current_project_id = result.id                except StopIteration:                    print "Project %s is bogus" % (project_name)                    current_project_id = None            if current_project_id is None:                delete_these.add(file_obj.id)                continue            query = file_table.update().where(file_table.c.id==file_obj.id) \                .values(project_id=current_project_id, name=path).execute()            print "Deleting %s bad files" % (len(delete_these))        for id in delete_these:            file_table.delete().where(file_table.c.id==id).execute()            current_project_name = None        current_project_id = None        delete_these = set()        result = select([func.count(directory_table.c.id)]).execute().fetchall()        num_dirs = result[0][0]        counter = 0        for dir_obj in select([directory_table.c.id,                directory_table.c.name]).order_by(directory_table.c.name).execute():            counter += 1            if counter % 500 == 0:                print "%s out of %s (%5.2f%%)" % (counter, num_dirs,                    float(counter)*100/num_dirs)            project_name, dir_name = dir_obj.name.split('/', 1)            if project_name != current_project_name:                current_project_name = project_name                result = select([project_table.c.id]) \                    .where(project_table.c.name==project_name).execute()                try:                    result = iter(result).next()                    current_project_id = result.id                except StopIteration:                    print "Project %s is bogus" % (project_name)                    current_project_id = None            if current_project_id is None:                delete_these.add(dir_obj.id)                continue            query = directory_table.update().where(directory_table.c.id==dir_obj.id) \                .values(project_id=current_project_id, name=dir_name).execute()        print "Deleting %s bad directories" % (len(delete_these))        for id in delete_these:            directory_table.update().where(directory_table.c.parent_id==id) \                .values(parent_id=None).execute()            directory_table.delete().where(directory_table.c.id==id).execute()        transaction.commit()    except:        transaction.rollback()        raise            migrate_engine.echo = True    conn.execute("""ALTER TABLE projects DROP FOREIGN KEY projects_ibfk_1""")    conn.execute("""ALTER TABLE projects        ADD CONSTRAINT projects_ibfk_1        FOREIGN KEY (user_id)        REFERENCES users(id)        ON DELETE CASCADE    """)    conn.execute("""ALTER TABLE projects ADD INDEX name (name)""")    conn.execute("""UPDATE projects, users SET projects.name='BespinSettings'        WHERE projects.name=users.private_project""")    conn.execute("ALTER TABLE users DROP COLUMN private_project")    conn.execute("""ALTER TABLE files             CHANGE name name VARCHAR(700) NOT NULL,            CHANGE project_id project_id INTEGER NOT NULL,            ADD UNIQUE (project_id, name)""")    conn.execute("""ALTER TABLE directories            CHANGE name name VARCHAR(700) NOT NULL,            CHANGE project_id project_id INTEGER NOT NULL,            ADD UNIQUE (project_id, name)""")    conn.execute("""ALTER TABLE projects            CHANGE name name VARCHAR(60) NOT NULL,            CHANGE user_id user_id INTEGER NOT NULL,            ADD UNIQUE (user_id, name)""")def downgrade():    # Operations to reverse the above upgrade go here.    print "Downgrade is not available for this one. Sorry!"

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品一区在线观看| 综合av第一页| 日韩精品一区二区三区视频播放 | 99在线视频精品| 国产精品资源网| 粉嫩蜜臀av国产精品网站| 国产一区二区导航在线播放| 麻豆久久久久久久| 九九国产精品视频| 国产一区二区三区四区五区入口 | 日韩免费在线观看| 精品国产欧美一区二区| 久久这里只精品最新地址| 欧美精品一区二区久久婷婷| 久久久久久久综合日本| 国产精品久久久久7777按摩| 亚洲精品ww久久久久久p站| 亚洲国产日韩一区二区| 日产精品久久久久久久性色| 精品一区二区三区的国产在线播放| 久色婷婷小香蕉久久| 精品伊人久久久久7777人| 国产成人免费9x9x人网站视频| 成人网男人的天堂| 欧美日韩综合色| 精品日韩一区二区三区| 中文幕一区二区三区久久蜜桃| 亚洲精品一二三区| 久久精品国产亚洲5555| 国产高清视频一区| 欧美日韩一区二区在线视频| 精品成a人在线观看| 亚洲欧美一区二区久久 | 中文无字幕一区二区三区| 玉米视频成人免费看| 视频一区视频二区中文| 国产成人一区二区精品非洲| 日本韩国欧美三级| 国产欧美日韩卡一| 午夜精品免费在线| 成人av网站大全| 日韩欧美第一区| 亚洲18影院在线观看| 成人av资源站| 久久久精品黄色| 日韩国产欧美在线观看| 成人手机电影网| 久久一日本道色综合| 天天综合天天综合色| voyeur盗摄精品| 久久精品视频免费观看| 天天综合色天天综合| 91视视频在线直接观看在线看网页在线看| 91精品久久久久久久久99蜜臂| 亚洲人成人一区二区在线观看| 极品少妇一区二区三区精品视频| 在线免费观看不卡av| 国产精品毛片无遮挡高清| 精品影视av免费| 日韩一级片在线观看| 亚洲成av人片| 欧美亚洲愉拍一区二区| 中文字幕日本乱码精品影院| 狠狠色丁香九九婷婷综合五月 | 美女网站色91| 欧美精品第1页| 亚洲第一精品在线| 欧美中文字幕一区二区三区| 亚洲欧美日韩系列| 91麻豆免费看| 悠悠色在线精品| 欧美色欧美亚洲另类二区| 亚洲国产日韩a在线播放性色| 99re66热这里只有精品3直播| 国产精品色哟哟| 91网站最新地址| 亚洲乱码一区二区三区在线观看| jizzjizzjizz欧美| 中文字幕人成不卡一区| 懂色av一区二区在线播放| 日本一区二区三区久久久久久久久不| 国内精品不卡在线| 国产日韩欧美精品一区| 国产99久久久精品| 中文字幕在线观看不卡| 色婷婷综合久久久| 亚洲丶国产丶欧美一区二区三区| 欧美日韩一区中文字幕| 久久精品国产精品青草| 久久久久久久电影| 不卡一卡二卡三乱码免费网站| 亚洲三级免费电影| 欧美日韩国产123区| 蜜臀av亚洲一区中文字幕| 久久久一区二区| 99久久婷婷国产综合精品电影| 曰韩精品一区二区| 欧美va亚洲va| 成人av集中营| 天涯成人国产亚洲精品一区av| www亚洲一区| 色成人在线视频| 蜜臀va亚洲va欧美va天堂| 亚洲国产精品黑人久久久| 91福利在线导航| 国产在线一区观看| 伊人夜夜躁av伊人久久| 日韩欧美高清dvd碟片| 91在线你懂得| 久久91精品国产91久久小草| 国产精品国模大尺度视频| 91精品国产品国语在线不卡| 国产精品白丝av| 日韩二区三区四区| 综合网在线视频| 久久在线免费观看| 欧美日韩国产高清一区二区| 豆国产96在线|亚洲| 免费人成精品欧美精品| 中文字幕中文在线不卡住| 91精品国产综合久久精品性色| 成人听书哪个软件好| 日本成人中文字幕| 一区二区三区中文免费| 欧美精品一区二区三区久久久| 欧美午夜电影网| 99国产精品久久久| 国产精品系列在线播放| 蜜臀av性久久久久av蜜臀妖精| 亚洲乱码日产精品bd| 中文字幕精品一区| 2023国产精华国产精品| 欧美一区二区国产| 欧美亚洲禁片免费| 91蜜桃免费观看视频| 国产成人精品网址| 国产在线国偷精品产拍免费yy| 亚洲成人一区在线| 亚洲一区电影777| 亚洲国产一二三| 一区二区欧美国产| 亚洲欧美一区二区不卡| 国产精品理论在线观看| 国产欧美日韩在线| 国产三级一区二区| 中文字幕欧美国产| 国产免费久久精品| 国产精品乱码人人做人人爱| 久久―日本道色综合久久| 欧美大胆一级视频| 日韩三级视频在线看| 日韩一区二区在线看| 91精品国产色综合久久不卡蜜臀 | 日韩欧美激情一区| 日韩视频在线一区二区| 日韩欧美亚洲一区二区| 日韩欧美不卡一区| 久久色.com| 国产日产欧美一区二区视频| 国产午夜精品福利| 国产精品色一区二区三区| 中文字幕一区二区三| 一区二区三区在线观看动漫| 亚洲精品国产高清久久伦理二区| 一区2区3区在线看| 日韩中文字幕一区二区三区| 免费看黄色91| 国产成人一区在线| 在线一区二区观看| 欧美日韩日本视频| 欧美www视频| 中文字幕视频一区| 亚洲韩国一区二区三区| 久久精品噜噜噜成人av农村| 国产剧情一区在线| 99re视频精品| 欧美电影免费观看完整版| 欧美韩国日本不卡| 一区二区在线电影| 蜜桃在线一区二区三区| 国产黄色91视频| 欧美人与性动xxxx| 久久久久久久久久看片| 亚洲欧美综合另类在线卡通| 亚洲成人av一区| 国产成人精品aa毛片| 欧美日韩另类国产亚洲欧美一级| 欧美一级爆毛片| 亚洲视频在线一区| 久久er99热精品一区二区| 99免费精品在线| 精品日韩av一区二区| 亚洲欧美一区二区久久| 韩国女主播成人在线| 日本精品一级二级| 久久久精品免费网站| 天堂资源在线中文精品| www.日韩av| 国产欧美1区2区3区| 午夜精品影院在线观看|