{"id":20619724,"url":"https://github.com/twtrubiks/flask-migrate-tutorial","last_synced_at":"2025-04-15T11:55:15.569Z","repository":{"id":84518956,"uuid":"79018103","full_name":"twtrubiks/Flask-Migrate-Tutorial","owner":"twtrubiks","description":"透過 Flask-Migrate-Tutorial  管理資料庫 (database)","archived":false,"fork":false,"pushed_at":"2017-02-15T09:49:46.000Z","size":5,"stargazers_count":4,"open_issues_count":1,"forks_count":6,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-15T11:55:10.548Z","etag":null,"topics":["database","flask","migrate","mssql","mysql","postgresql","python","sqlite","tutorial"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/twtrubiks.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-01-15T09:05:55.000Z","updated_at":"2024-04-19T06:14:09.000Z","dependencies_parsed_at":"2023-03-04T04:15:23.886Z","dependency_job_id":null,"html_url":"https://github.com/twtrubiks/Flask-Migrate-Tutorial","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twtrubiks%2FFlask-Migrate-Tutorial","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twtrubiks%2FFlask-Migrate-Tutorial/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twtrubiks%2FFlask-Migrate-Tutorial/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twtrubiks%2FFlask-Migrate-Tutorial/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/twtrubiks","download_url":"https://codeload.github.com/twtrubiks/Flask-Migrate-Tutorial/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249067775,"owners_count":21207395,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","flask","migrate","mssql","mysql","postgresql","python","sqlite","tutorial"],"created_at":"2024-11-16T12:12:22.152Z","updated_at":"2025-04-15T11:55:15.563Z","avatar_url":"https://github.com/twtrubiks.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Flask-Migrate-Tutorial\n透過 Flask-Migrate-Tutorial  管理資料庫 (database) 📝  \n\n* [Youtube Demo](https://youtu.be/-1B4ldgYyGA)   \n\n透過 [Flask-Migrate](https://flask-migrate.readthedocs.io/en/latest/)  管理資料庫 (database)\n\n\n## 特色\n* [Flask-Migrate](https://flask-migrate.readthedocs.io/en/latest/) 管理資料庫 (database)。\n\n\n## 安裝套件 \n確定電腦有安裝 [Python](https://www.python.org/) 之後\n\n請在  cmd (命令提示字元) 輸入以下指令\n``` \npip install Flask-Migrate\n```\n\nclone 我的簡單範例\n\n``` \ngit clone https://github.com/twtrubiks/Flask-Migrate-Tutorial.git\n```\n\n## 使用方法\n\nclone 完之後，請切換到 \u003cb\u003eEntity\u003c/b\u003e 資料夾底下\n\nEntity.py\n\n``` \nfrom flask import Flask\nfrom flask_sqlalchemy import SQLAlchemy\nfrom flask_script import Manager\nfrom flask_migrate import Migrate, MigrateCommand\n\napp = Flask(__name__)\napp.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'\n\ndb = SQLAlchemy(app)\nmigrate = Migrate(app, db)\n\nmanager = Manager(app)\nmanager.add_command('db', MigrateCommand)\n\n\nclass PictureDate(db.Model):\n    __tablename__ = 'PictureDate'\n\n    Id = db.Column(db.Integer, primary_key=True)\n    Uuid = db.Column(db.String(64), unique=True)\n    Title = db.Column(db.String(64))\n    Description = db.Column(db.String(128))\n\nif __name__ == '__main__':\n    manager.run()\n\n```\n\n步驟一 : 先初始化\n``` \npython Entity.py db init\n```\n![alt tag](http://i.imgur.com/WK2vhKg.jpg)\n\n步驟二 : migrate\n``` \npython Entity.py db migrate\n```\n![alt tag](http://i.imgur.com/iCTWKlb.jpg)\n\n步驟三 : upgrade\n``` \npython Entity.py db upgrade\n```\n![alt tag](http://i.imgur.com/4Wh369t.jpg)\n\n你會發現目標資料夾裡多了 \u003cb\u003eapp.db\u003c/b\u003e\n\n![alt tag](http://i.imgur.com/mpzTLgU.jpg)\n\n可以使用 [SQLiteDatabaseBrowser](http://sqlitebrowser.org/)  打開 DB\n\n![alt tag](http://i.imgur.com/1qL2vwP.jpg)\n\n![alt tag](http://i.imgur.com/VtkNV3u.jpg)\n\n假如今天你想要 新增 or 刪除 欄位 或是 修改欄位的型態 ，\n\n修改 Entity.py ， 之後，再重複步驟二以及步驟三即可。\n\n其他說明 :\n\n這裡是使用 SQLITE 當作範例，如果你要換其他的資料庫，請修改這串字串\n``` \napp.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'\n```\n\n假如今天我們要使用 PostgreSQL ， 我們就要將這串字串修改為 ( 需要額外安裝套件 [psycopg2](http://initd.org/psycopg/) )\n``` \napp.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://postgres:PASSWORD@localhost/DB'\n```\n\n假如今天我們要使用 MySQL ， 我們就要將這串字串修改為 ( 需要額外安裝套件 [mysql-connector-python](https://github.com/mysql/mysql-connector-python)  )\n``` \napp.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+mysqlconnector://user:PASSWORD@XXX.XXX.XX.XX:3306/DB'\n```\n\n假如今天我們要使用 MSSQL ， 我們就要將這串字串修改為 ( 需要額外安裝套件 [pyodbc](https://mkleehammer.github.io/pyodbc/) )\n``` \napp.config['SQLALCHEMY_DATABASE_URI'] = 'mssql+pyodbc://user:PASSWORD@XXX.XXX.XX.XX/DB?driver=ODBC+Driver+11+for+SQL+Server'\n```\n\n\n## 操作 db\n\n增加一筆資料 ( app.py )\n\n``` \nfrom Model.dModel import *\nimport uuid\n\nuuid = str(uuid.uuid4())\ntitle = \"test Title\"\ndescription = \"test Description\"\n\ninsert_data = PictureDate(Uuid=uuid\n                          , Title=title\n                          , Description=description\n                          )\ndb.session.add(insert_data)\ndb.session.commit()\nprint(\"DONE\")\n\n```\n\n執行完上述指令，如果正確無誤，db 會多出一筆資料。\n\n![alt tag](http://i.imgur.com/ywgs8zs.jpg)\n\n\n更多操作請參考 [SQLAlchemy](https://zh.wikipedia.org/wiki/SQLAlchemy) \n\n\n\n## 執行環境\n* Python 3.4.3\n\n## Reference \n* [Flask-Migrate](https://flask-migrate.readthedocs.io/en/latest/) \n\n\n## License\nMIT license\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwtrubiks%2Fflask-migrate-tutorial","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftwtrubiks%2Fflask-migrate-tutorial","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwtrubiks%2Fflask-migrate-tutorial/lists"}