Mysql 工作常用代码总结

复制表插入表

# 复制表
-- 在目标数据库中创建一个新表,并将源表的数据复制到新表中
CREATE TABLE XXX1.table1 AS SELECT * FROM XXX2.table1;
# 插入表
insert into XXX1.table_1 select * from XXX.table_2;
# 继承别的表结构,然后新建表格导入相应表数据
create table XXX.table_all as select * from XXX2.table_01 ;
comment on table XXX.table_template is '2024年就业招聘信息';

表授权

grant select on XXX.table1 to name_to_grant; 

python 下载/上传表数据

导入库

import pandas as pd
import numpy as np
import re
import psycopg2
from sqlalchemy import create_engine

下载数据

def download_sqlfile(sql_file):
    """
    连接数据库,下载所需数据
    """
    # 建立数据库连接
    con = psycopg2.connect(database="warehouse", user="name", password="password", host="XX.XXX.cn", port="5432")
    # 调用游标对象
    cur = con.cursor()

    # 执行语句,下载数据
    sql_command = "select * from %s"%sql_file # 
    # 获取数据
    # 由于数据库首次运行容易丢失连接,需两次重复运行
    try:
        data = pd.read_sql(sql_command, con,params=(sql_file,))
        print('连接数据库成功')
    except:
        print('首次连接数据库失败,尝试第二次连接数据库')
        data = pd.read_sql(sql_command, con,params=(sql_file,))
        print('连接数据库成功')
    
    # 关闭数据库连接关闭游标
    cur.close()
    con.close()
    
    return data

sql_file_1 = 'XXX.table_name'
df_1 = download_sqlfile(sql_file_1)

上传数据

# 数据上传到数据库
def upload_table(table_name, table):
    """
    将本地Dataframe存储到数据库中
    """
    # 数据库连接信息 database="warehouse", user="chengyuanting", password="ti59Ww43TAKNzCUj", host="pg.sunsharp.cn", port="5432")
    db_connection = {
        'host': 'pg.sunsharp.cn',
        'port': '5432',
        'dbname': 'warehouse',
        'user': 'chengyuanting',
        'password': 'ti59Ww43TAKNzCUj'
    }

    # 创建数据库引擎
    engine = create_engine('postgresql+psycopg2://{user}:{password}@{host}:{port}/{dbname}'.format(**db_connection))
    
    # 将本地Dataframe存储到数据库中
    with engine.connect() as conn:
        print(bool(conn))
        
        table.to_sql(name = table_name, con = engine, schema = 'staging_data_sy') # 注意此处to_sql需要使用sqlalchemy 包的 create_engine;数据库链接只能用engine不能使用
        
#     table.to_sql(table_name, engine, if_exists='replace', index=False)
    
    print('表格上传成功')
    
    return None


# 将data存储到数据库中
table_name = 'table_name'
try:
    upload_table(table_name, df_1)
except:
    print('第一次上传失败,正在进行第二次上传...')
    upload_table(table_name, df_1)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值