python pandas 数据库_Python中pandas函数操作数据库
一:創建鏈接數據庫引擎
Python
from sqlalchemy import create_engine
engine= create_engine('postgresql://user@58.251.157.179:port/database',echo = True)
echo = True ,會顯示在加載數據庫所執行的SQL語句。
1
2
3
4
5
fromsqlalchemyimportcreate_engine
engine=create_engine('postgresql://user@58.251.157.179:port/database',echo=True)
echo=True,會顯示在加載數據庫所執行的SQL語句。
二:讀取數據庫數據,存儲為DataFrame格式
1:讀取自定義數據(通過SQL語句)
pandas.read_sql_query(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None,chunksize=None)
例如:data = pd.read_sql_query('select * from t_line ',con = engine),會返回一個數據庫t_line表的DataFrame格式。如有有時間列可以parse_dates = [time_column]用于解析時間,并把此列作為索引index_col = [time_column]
read_sql_query()中可以接受SQL語句,包括增刪改查。但是DELETE語句不會返回值(但是會在數據庫中執行),UPDATE,SELECT,等會返回結果.
例如:data = pd.read_sql_query('delete from test_cjk where f_intime = 1309',con = engine),這條語句會執行,刪除 test_cjk表中f_intime=1309的值,但不會返回data。
其他例子:
'''插入操作''' ?pd.read_sql_query("insert into cjk_test h values %(data)s",params={'data':v_split[11]},con = engine)
'''更新操作'''?pd.read_sql_query("update cjk_test set a='粵11111' ?WHERE a='粵B30738'",con = engine)
'''刪除操作'''?pd.read_sql_query("delete from cjk_test where c='1'",con=engine)
刪除插入更新操作沒有返回值,程序會拋出SourceCodeCloseError,并終止程序。如果想繼續運行,可以try捕捉此異常。
2:讀取整張表于DataFrame格式
pandas.read_sql_table(table_name, con, schema=None, index_col=None, coerce_float=True, parse_dates=None, columns=None, chunksize=None)
例如:data = pd.read_sql_table(table_name = 't_line',con = engine,parse_dates = 'time',index_col = 'time',columns = ['a','b','c'])
3:讀數據庫
pandas.read_sql(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=None)
三:數據寫入于數據庫
DataFrame.to_sql(name, con, flavor='sqlite', schema=None, if_exists='fail', index=True, index_label=None, chunksize=None, dtype=None)
例如:data.to_sql('test_cjk',engine,if_exists='replace',index = False),把數據寫入test_cjk表中。
if_exists='replace',如果數據庫中有test_cjk表,則替換。
if_exists='append',如果數據庫中有test_cjk表,則在表后面添加。
if_exists='fail',如果數據庫中有test_cjk表,則在寫入失敗。
chunksize,如果data的數據量太大,數據庫無法響應可能會報錯,這時候就可以設置chunksize,比如chunksize = 1000,data就會一次1000的循環寫入數據庫。
更多可以參考文檔:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_sql.html?highlight=sql#pandas.DataFrame.to_sql
總結
以上是生活随笔為你收集整理的python pandas 数据库_Python中pandas函数操作数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue防抖和节流是什么_JavaScri
- 下一篇: java8 循环jsonarray_JS