2021年3月26日 01:16 by scott
python小技巧之前有事备份数据表的时候,用的方法是:用pandas读取MySQL表,然后有改个表名,重新写入数据库。
但是这样肯能会慢,不如直接在数据库里操作。
直接使用sql里的建表语句即可。
代码如下:
import datetime
from sqlalchemy import create_engine
def create_my_engine():
db_info = {'user': 'root',
'password': '123456',
'host': '127.0.0.1',
'port': 3306,
'database': 'test_join'
}
engine = create_engine(
'mysql+pymysql://%(user)s:%(password)s@%(host)s:%(port)s/%(database)s?charset=utf8' % db_info,
encoding='utf-8')
return engine
def bak_log(table_name, engine):
dt = datetime.datetime.now().strftime("%Y_%m_%d")
conn = engine.connect()
tb = f"{table_name}_{dt}"
sql = f"CREATE TABLE {tb} SELECT * FROM {table_name}"
conn.execute(sql)
conn.close()
if __name__ == "__main__":
name = "a_table"
eng = create_my_engine()
res = bak_log(name, eng)
print(res)