【问题标题】:Run SQL Query in Python在 Python 中运行 SQL 查询
【发布时间】:2020-11-01 04:33:27
【问题描述】:

我需要在 python 中转换一个大的 SQL 代码。除了将 SQL 代码转换为 python,有什么方法可以在 python 脚本中运行 sql 查询?假设我的 MsSqlServer 中有一个存储过程。如何在 python 中调用该存储过程?

【问题讨论】:

标签: python python-3.x pandas python-2.7


【解决方案1】:

有很多方法可以在 Python 脚本中运行 SQL 命令。查看SqlAlchemy

【讨论】:

    【解决方案2】:

    您可以将SQLAlchemy 与支持Microsoft SQL Server 的PyODBC 驱动程序一起使用。您可以直接从 PyPi 安装这两个软件包。

    from sqlalchemy import create_engine
    engine = create_engine("mssql+pyodbc://user:pass@dsn")
    engine.execute("SELECT 1;")
    

    【讨论】:

      【解决方案3】:

      一种方法可能如下(您可以保存整个查询,这当然比示例中的更复杂):

      # Import sqlalchemy's create_engine() function
      from sqlalchemy import create_engine
      import pandas as pd
      
      # Create the database engine
      engine = create_engine("mssql+pyodbc://user:pass@dsn")
      
      # Create a SQL query to load the entire table
      query = """
      SELECT * 
        FROM XXX;
      """
      
      # Load with the SQL query
      load = pd.read_sql(query, engine)
      

      【讨论】:

      • 对于需要在开头导入pandas的:import pandas as pd.我已经修改了上面的回复
      【解决方案4】:

      如果您基本上在 XAMP 中使用 mysql localhost,那么您可以在您的 python 文件中包含以下代码,无需使用 sql 语句 SQLALchemy 可以正常工作。

      app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:@localhost/yourdatabasename'
      

      【讨论】:

        【解决方案5】:

        除了其他答案之外,使用 sqlalchemy (https://www.sqlalchemy.org/) 可以执行原始 SQL,而无需使用“pythonic”对象方式来执行 db 操作。例如,对于 SQLITE(您可以使用其他驱动程序),您可以这样运行它。

        
        # install with `pip install sqlalchemy`
        
        import sqlalchemy as db
        
        engine = db.create_engine('sqlite:///my-example-db.sqlite')
        
        with engine.connect() as con:
        
            rs = con.execute('SELECT * FROM myexampletable')
        
            for row in rs:
                print(row)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-11-20
          • 1970-01-01
          相关资源
          最近更新 更多