Python連線資料庫將結果轉換為DataFrame(列名和表欄位一致)
很多時候,我們用Python處理資料,需要連線到Mysql、Postgresql等資料庫,獲取表資料,再構建pandas的DataFrame進行進一步處理。但是查詢資料庫結果集是沒有表欄位名稱的,我們希望構建的DataFrame的列名和表欄位一樣。
直接上程式碼
這裡以Postgresql資料庫為例,Mysql資料庫差不多,其他的自行改造。
先封裝一個查詢類,查詢返回的結果是一個字典,head
是表列名,data
是表資料,再用DataFrame構造資料結構。
import psycopg2
import pandas as pd
class db_pg:
def __init__(self, host, db, user, pwd, port):
self.host = host
self.db = db
self.user = user
self.pwd = pwd
self.port = port
self._conn = self._connect()
self._cursor = self._conn.cursor()
def _connect(self):
return psycopg2.connect(
database=self.db,
user=self.user,
password=self.pwd,
host=self.host,
port=self.port)
def select(self, sqlCode):
self.common(sqlCode)
col_names = []
result = {}
column_count = len(self._cursor.description)
for i in range(column_count):
desc = self._cursor.description[i]
col_names.append(desc[0])
data = self._cursor.fetchall()
result['head'] = col_names
result['data'] = data
return result
def close(self):
self._cursor.close()
self._conn.close()
def common(self, sqlCode):
try:
self._cursor.execute(sqlCode)
except Exception as e:
print(e)
self._conn.rollback()
self._cursor.execute(sqlCode)
self._conn.commit()
def __del__(self):
self.close()
db_conn = {
'host': "******",
'db' : "******",
'user': "******",
'pwd' :"******",
'port': "******"
}
pg_conn = db_pg(host=db_conn['host'],db=db_conn['db'],user=db_conn['user'],pwd=db_conn['pwd'],port=db_conn['port'])
rs = pg_conn.select("select * from test")
rs_df = pd.DataFrame(list(rs.get('data')),columns=rs.get('head'))
執行示例
更多
相關文章
- 將表結構轉換成實體欄位
- 欄位連線的各種資料庫的寫法 (轉)資料庫
- Golang 將資料庫轉換為gorm結構和RESTful apiGolang資料庫ORMRESTAPI
- 織夢資料庫表結構_Dedecms資料庫表和欄位詳細介紹資料庫
- 將json資料轉換為Python字典將json資料轉換為Python字典JSONPython
- 巧用臨時表將大結果集轉換為小結果集驅動查詢薦
- JAVA資料庫處理(連線,資料查詢,結果集返回)Java資料庫
- python遠端連線mysql以及pandas.DataFrame.to_sql寫入資料庫PythonMySql資料庫
- 快速將下劃線欄位改為駝峰欄位
- 資料庫表欄位命名規範資料庫
- 表中已有資料,將表中某個欄位為空的改為非空
- oracle 資料庫設定表和欄位的別名Oracle資料庫
- mybatis查詢mysql 資料庫中 BLOB欄位,結果出現亂碼MyBatisMySql資料庫
- 【Python】轉換mysql 結果集為詞典型別PythonMySql型別
- Mysql資料庫表連線MySql資料庫
- 為 MySQL 的查詢結果新增排名欄位MySql
- Python連線資料庫程式碼結構Python資料庫
- 動態為10g資料庫的表新增欄位,到256個欄位,hung住了?資料庫
- Python 資料結構之DataframePython資料結構
- 逆向工程——利用PowerDesigner將表結構轉為物理資料模型並轉換為圖片模型
- SQL SERVER 資料庫查詢表和欄位資訊語句SQLServer資料庫
- 將資料庫轉換為歸檔日誌模式資料庫模式
- openGauss資料庫將磁碟錶轉換為MOT資料庫
- mysql資料庫新增和修改欄位MySql資料庫
- 資料庫索引欄位請不要為NULL資料庫索引Null
- ASP獲取資料庫表名,欄位名以及對欄位的一些操作 (轉)資料庫
- python--進位制轉換和資料交換Python
- Hash連結串列轉換為紅黑樹,和樹轉換為連結串列的條件
- python資料庫連線池技術總結Python資料庫
- Python SqlAlchemy動態新增資料表欄位PythonSQL
- PowerDesigner表名、列名大小寫轉換
- mysql 資料庫 表 欄位 編碼修改 方法MySql資料庫
- Oracle資料庫連結(DBLink)中如何訪問包含BLOB欄位的資料Oracle資料庫
- [資料庫連線字串] Access 連線字串(轉)資料庫字串
- [資料庫連線字串]Access連線字串(轉)資料庫字串
- hive將查詢資料插入表中某欄位無資料Hive
- 如何在Oracle資料庫中查詢表和欄位說明Oracle資料庫
- python資料庫連線池Python資料庫