python使用read_sql与to_sql读写数据库

文章目录

详细说明

使用pandas读写数据库的方法(以Mysql为例)如下:

  • 首先是打包一个工具函数:

    import pandas as pd
    import numpy as np
    from sqlalchemy import create_engine, text
    
    
    def get_sql_engine():
        # 数据库
        mysql_config = {
         
            "db": "test_db",
            "host": "127.0.0.1",
            "user": "test_user",
            "password": "test_pass",
            "port": 3306,
        }
        engine = create_engine(
            "mysql+pymysql://{}:{}@{}:{}/{}".format(mysql_config['user'], mysql_config['password'], mysql_config['host'],
                                                    mysql_config['port'], mysql_config['db']))
        return engine
    
  • 读取数据库.read_sql()的方法:

    engine = get_sql_engine()
    
    # ======== 写入 ===========
    data_df = pd.DataFrame(np.random.random(size=(100, 5)))
    data_df.to_sql('test_data_df', con=engine, if_exists='replace', index=False)
    
  • 读取数据库read_sql()的方法:

     data_df = pd.read_sql_query(text('select * from test_data_df'), con=engine.connect())
    

    在读取的时候容易报错,有几个要点:
    1. 首先导入from sqlalchemy import text,然后以text(sql语句)的形式传入第一个参数
    2. 在第二个参数需要使用engine.connect()

示例程序

import pandas as pd
import numpy as np
from sqlalchemy import create_engine, text


def get_sql_engine():
    # 数据库
    mysql_config = {
   
        "db": "test_db",
        "host": "127.0.0.1",
        "user": "test_user",
        "password": "test_pass",
        "port": 3306,
    }
    engine = create_engine(
        "mysql+pymysql://{}:{}@{}:{}/{}".format(mysql_config['user'], mysql_config['password'], mysql_config['host'],
                                                mysql_config['port'], mysql_config['db']))
    return engine


def main():
    engine = get_sql_engine()
    # ======== 写入 ===========
    data_df = pd.DataFrame(np.random.random(size=(100, 5)))
    data_df.to_sql('test_data_df', con=engine, if_exists='replace', index=False)
    # ======== 读取 ===========
    data_df = pd.read_sql_query(text('select * from test_data_df'), con=engine.connect())


if __name__ == '__main__':
    main()

相关推荐

  1. python使用read_sqlto_sql数据库

    2024-01-25 23:50:01       32 阅读
  2. python-文本数据

    2024-01-25 23:50:01       13 阅读
  3. 使用PythonRedis——Lists

    2024-01-25 23:50:01       37 阅读
  4. 使用PythonRedis——Hashes

    2024-01-25 23:50:01       41 阅读
  5. 使用PythonRedis——Zsets

    2024-01-25 23:50:01       32 阅读
  6. python kafka

    2024-01-25 23:50:01       32 阅读
  7. python文件

    2024-01-25 23:50:01       20 阅读
  8. Python:文件

    2024-01-25 23:50:01       15 阅读
  9. Python文件函数的基础知识点

    2024-01-25 23:50:01       39 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-25 23:50:01       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-25 23:50:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-25 23:50:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-25 23:50:01       20 阅读

热门阅读

  1. swift 进阶知识点

    2024-01-25 23:50:01       29 阅读
  2. C# 实现 XOR 密码

    2024-01-25 23:50:01       28 阅读
  3. android基础知识补漏

    2024-01-25 23:50:01       31 阅读
  4. Qt 信号槽函数异步与同步处理

    2024-01-25 23:50:01       34 阅读
  5. python super()笔记

    2024-01-25 23:50:01       35 阅读
  6. ElasticSearch分词器介绍

    2024-01-25 23:50:01       37 阅读
  7. qml中QtObject类型的使用

    2024-01-25 23:50:01       33 阅读
  8. 关于C#中的Select与SelectMany方法

    2024-01-25 23:50:01       38 阅读
  9. C# DLL嵌套调用时修改生效

    2024-01-25 23:50:01       33 阅读
  10. 地址解析协议

    2024-01-25 23:50:01       37 阅读
  11. MongoDB聚合:$currentOp

    2024-01-25 23:50:01       35 阅读
  12. C语言|判断和循环相关题目

    2024-01-25 23:50:01       37 阅读
  13. 一次Rust重写基础软件的实践(二)

    2024-01-25 23:50:01       33 阅读