利用 SQLAlchemy 實現輕量級資料庫遷移

2021-10-20 06:26:11 字數 1765 閱讀 5326

本文介紹結合 python 的幾個工具,實現輕量級的資料庫遷移。

在日常工作中,可能需要將資料遷移到不同的資料庫,可以考慮下面一些簡單的辦法:

假設我們現在需要把 sql server 中 emp_master 表的資料遷移到 sqlite 資料庫的同名表中。遷移的過程分為兩步:

首先利用 sqlacodegen 工具,生成 sqlalchemy orm 模型:

sqlacodegen mssql+pymssql://user:pwd@localhost:1433/testdb > models.py -- tables emp_master
生成如下的**,起始**可能有些差異,手工修改一下:

# models.py

from sqlalchemy import column, integer, string

from sqlalchemy.ext.declarative import declarative_base

base = declarative_base(

)class

empmaster

(base)

: __tablename__ =

'emp_master'

emp_id = column(integer, primary_key=

true

) gender = column(string(10)

) age = column(integer)

email = column(string(50)

) phone_nr = column(string(20)

) education = column(string(20)

) marital_stat = column(string(20)

) nr_of_children = column(integer)

使用 sqlalchemy 在目標資料庫中建立資料庫和表:

# create_shcema.py

from sqlalchemy import create_engine

from models import base

engine = create_engine(

'sqlite:/'

)base.metadata.create_all(engine)

需要用到 read_sql() 方法讀取資料到 dataframe,用到 dataframe 的 to_sql() 方法將資料傳送的目標資料庫:

# data_migrate.py

from sqlalchemy import create_engine

import pandas as pd

source_engine = create_engine(

'mssql+pymssql://user:pwd@localhost:1433/testdb'

)target_engine = create_engine(

'sqlite:/'

)df = pd.read_sql(

'emp_master'

, source_engine)

df.to_sql(

'emp_master'

, target_engine, index=

false

, if_exists=

'replace'

)

sqlalchemy如何實現時間列自動更新?

目標 資料表的時間列在其他列內容更新的時候,自動更新時間列到更新的時間 方法 資料庫表模型如下 server default表示初始時間,onupdate表示更新的時間 class monitordata base tablename monitor data id column integer,p...

sqlalchemy如何實現時間列自動更新?

目標 資料表的時間列在其他列內容更新的時候,自動更新時間列到更新的時間 方法 資料庫表模型如下 server default表示初始時間,onupdate表示更新的時間 class monitordata base tablename monitor data id column integer,p...

利用騰訊輕量伺服器搭建FRP服務

在如今這個ipv4缺乏的年代,家庭寬頻獲取到公網ipv4相對比較困難,特別是移動使用者,基本上就是預設不給公網ipv4,這時候,如果我們想要把內網的資源對映到公網上去,可能會需要用到內網穿透。而frp就是提供這種服務的一種工具廢話少說,現在開始進入正題。解壓並寫配置檔案 並按照配置要求開放防火牆埠 ...