python SQL1 之 如何连接 PostgreSQL 的 SQL 数据库 并取数成DataFrame

Postgre是功能非常强大的数据库管理系统,而且全部开源。MySQL被认为是世界上最流行的数据库,而PostgreSQL被认为是世界上最先进的数据库。PostgreSQL在很多方面都比MySQL强,如复杂SQL的执行、存储过程、触发器、索引。同时PostgreSQL是多进程的,而MySQL是线程的。

1. 导入:

import psycopg2

这个库看起来很奇怪,但是理解之后就会发现容易记忆。

psyco是亢奋、精神病的意思,而pg可以理解为postgre的缩写,是不是觉得开发者是个精力充沛的geek?

2 自然是二代版本,现在已经出来pyscopg3, 但是由于笔者的习惯,这里还是以psycopg2作为案例。

2. 连接数据库:

psycopg2.connect(datebase = , user = , password = , host = )

连接记住connect,后面加上四个数据库必须知道的【库名、用户名、密码、域名】

future_database = {

'database' : 'cc',

'user' : 'ccc',

'password' : '·······',

'host' : '10.21···'

}

conn = psycopg2.connect(database = future_database['database'], user = future_database['user'],password = future_database['password'], host = future_database['host'])

Oracle:

conn_str = user/password@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)\

(HOST=10.21...)(PORT=21010)))(CONNECT_DATA=(SERVICE_NAME=database)))'

conn2 = cx_Oracle.connect(conn_str)

3. 将data转换为dataframe

方法1:

将第三步省去,直接用pd.read_sql 的功能

sql = "SELECT tradedate, contract, symbol, closeprice, settle FROM cta_futures_daily\

WHERE symbol = 'IC' "

df = pd.read_sql(sql, conn, index_col = 'tradedate')

方法二:执行(原理)

connect 之后 就是找到cursor(游标,可以控制资源的分配)

为什么说是游标呢?因为这个相当于指针或引用,从客户端指向SQL私有区域,cursor打开时分配,执行结束时游标关闭并释放。比如Oracle可以通过控制游标数量,防止过度SQL工作区的分配。

cursor = conn.cursor()

cursor.execute("SELECT ···")

dataall = cursor.fetchall()

columnDes = cursor.description # 获取连接对象的描述信息

columnNames = [columnDes[i][0] for i in range(len(columnDes))]

df = pd.DataFrame([list(i) for i in dataall], columns=columnNames)

通过cursor.description 找columns的名字。

数据是list里装了tuple,因此要将每一个tuple转为list

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中使用Spark SQL连接数据库主要有两个步骤:首先,需要使用适当的JDBC驱动程序连接数据库。其次,将数据库表加载为Spark DataFrame进行查询和分析。 以下是一些示例代码: 1. 安装所需软件包: ```python !pip install pyspark !pip install findspark ``` 2. 导入所需的库并设置SparkSession: ```python import findspark findspark.init() from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("Database Connection") \ .config("spark.driver.extraClassPath", "/path/to/jdbc-driver.jar") \ .getOrCreate() ``` 请注意,上面的`/path/to/jdbc-driver.jar`应该替换为您实际的JDBC驱动程序路径。 3. 连接数据库: ```python url = "jdbc:postgresql://localhost:5432/dbname" properties = { "user": "username", "password": "password", "driver": "org.postgresql.Driver" } df = spark.read.jdbc(url=url, table="table_name", properties=properties) ``` 请将`"jdbc:postgresql://localhost:5432/dbname"`替换为您的数据库URL,以及`"username"`和`"password"`替换为您的数据库凭据。 4. 进行数据查询和分析: ```python df.show() # 其他Spark SQL操作... ``` 您可以使用`df.show()`显示DataFrame中的数据,并使用其他Spark SQL操作来查询和分析数据。 请注意,上述示例使用PostgreSQL数据库和对应的JDBC驱动程序。如果您使用不同的数据库,您需要相应地更改`url`和`properties`变量。 希望以上代码可以帮助您在Python中使用Spark SQL连接数据库

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值