共计 3714 个字符,预计需要花费 10 分钟才能阅读完成。
明天咱们来摸索 pandas。
一、基本知识概要
- SQLAlchemy 模块装置
- 数据库 PostgreSQL 下载安装
- PostgreSQL 根本介绍应用
- Pandas+SQLAlchemy 将数据导入 PostgreSQL
- Python 与各种数据库的交互代码实现
二、开始入手动脑
1、SQLAlchemy 模块装置
装置SQLAlchemy
模块(上面操作都是在虚拟环境下):办法一:间接 pip 装置(最简略,装置慢,可能出错)
pip install SQLAlchemy
办法二:轮子 (wheel) 装置(比较简单,装置速度还能够,根本不出错) 点击这里下载SQLAlchemy 的.whl
文件,而后挪动到你的开发环境目录下。
pip install xxxxx.whl
办法三:豆瓣源装置(比较简单,装置速度快,不便,举荐)
pip install \-i https://pypi.douban.com/simple/ SQLAlchemy
2、数据库 PostgreSQL 下载安装
(1) 下载地址:https://www.enterprisedb.com/…
(2) 下载实现后,点击安装文件,基本上就是 Next。
First,装置目录,倡议本人抉择,不要装置在 C 盘。
Second,Password,能够设置简略点,毕竟只是用来本人学习。
Third,端口号,倡议不要改,就用 5432,改了容易和其余端口抵触,到时候本人又不晓得怎么解决,麻烦。
其余没有说到的就默认设置,Next,Next,Next~ 装置过程个别 10 分钟左右,不要急。Finally,装置实现后,勾销图上的选项框,图上的意思是在后盾启动 Stack Builder(堆栈生成器),没有必要。
最初举荐几个相干学习网站 Postgre 社区:https://www.postgresql.org/co… Postgre 官网文档:https://www.postgresql.org/docs/ 易百 Postgre 学习教程:https://www.yiibai.com/postgr…
3、PostgreSQL 根本介绍应用
(1) PostgreSQL 特点
以上内容截取自 易百 Postgre 学习教程。(2) 利用 PostgreSQL 创立一个数据库 a . 关上pgADmin4
,发现这个图形化操作界面是一个 Web 端的,先会要求输出 Password,就是装置时候设置的 Password。点击Servers
->PostgreSQL 11
->Databases
-> 右键 ->Create
->Database
。
b . 输出数据库名称,其余默认,正文本人轻易写,我写的first database
,示意我的第一个数据库。
咱们还能够看一下数据库创立的语句,点击弹框中的SQL
即可。
4、Pandas+SQLAlchemy 将数据导入 Postgre
(1) Python 操作代码
import pandas as pd | |
import sqlalchemy as sa | |
\# 读取的 CSV 文件门路 | |
r\_filepath \= r"H:\\PyCoding\\Data\_analysis\\day01\\data01\\realEstate\_trans.csv" | |
\# 数据库鉴权 | |
user \= "postgres" \# 数据库用户名 | |
password \= "root" \# 数据库 password | |
db\_name \= "test513" \# 数据库名称 | |
\# 连贯数据库 | |
engine \= sa.create\_engine('postgresql://{0}:{1}@localhost:5432/{2}'.format(user, password, db\_name)) | |
print(engine) | |
\# 读取数据 | |
csv\_read \= pd.read\_csv(r\_filepath) | |
\# 将 sale\_date 转成 datetime 对象 | |
csv\_read\['sale\_date'\] \= pd.to\_datetime(csv\_read\['sale\_date'\]) | |
\# 将数据存入数据库 | |
csv\_read.to\_sql('real\_estate', engine, if\_exists\='replace') | |
print("实现") | |
\# 可能报错:ModuleNotFoundError: No module named 'psycopg2' | |
\# 解决办法:pip install psycopg2 |
(2) 代码解析
engine \= sa.create\_engine('postgresql://{0}:{1}@localhost:5432/{2}'.format(user, password, db\_name))
sqlalchemy 的 create\_engine 函数,创立一个数据库连贯,参数为一个字符串,字符串的格局是:
<database_type>://<user_name>:<password>@<server>:<port>/<database_name>
数据库类型:// 数据库用户名: 数据库 password@服务器 IP(如:127.0.0.1)或者服务器的名称(如:localhost): 端口号 / 数据库名称
其中能够是:postgresql,mysql 等。
csv\_read.to\_sql('real\_estate', engine, if\_exists\='replace')
pandas 的 to\_sql 函数,将数据(csv\_read 中的)间接存入 postgresql,第一个参数指定了存储到数据库后的表名,第二个参数指定了数据库引擎,第三个参数示意,如果表real_estate
曾经存在,则替换掉。(3) 运行后果
此外,pandas
库还提供了数据库查问操作函数read_sql_query
, 只需传入查问语句和数据库连贯引擎即可,源码正文为Read SQL query into a DataFrame.
,意思是:把数据库查问的内容变成一个DataFrame
对象返回。
query \= 'SELECT \* FROM real\_estate LIMIT 10' | |
top10 \= pd.read\_sql\_query(query, engine) | |
print(top10) |
5、Python 与各个数据库的交互代码
a . Python 与 MySql
\# 应用前先装置 pymysql 模块:pip install pymysql | |
\# 导入 pymysql 模块 | |
import pymysql | |
#连贯数据库, 参数阐明:服务器,用户名,数据库 password,数据库名称 | |
db \= pymysql.connect("localhost","root","root","db\_test") | |
#应用 cursor()办法创立一个游标对象 | |
cursor \= db.cursor() | |
#应用 execute()办法执行 SQL 语句 | |
cursor.execute("SELECT \* FROM test\_table") | |
#应用 fetall()获取全副数据 | |
data \= cursor.fetchall() | |
#敞开游标和数据库的连贯 | |
cursor.close() | |
db.close() |
b . Python 与 MongoDB
\# 应用前先装置 pymongodb 模块:pip install pymongodb | |
\# 导入 pymogodb 模块 | |
import pymongo | |
\# 连贯数据库, 参数阐明:服务器 IP,端口号默认为 27017 | |
my\_client \= pymongo.MongoClient(host\="127.0.0.1",port\=27017) | |
\# 间接通过数据库名称索引,有点像字典 | |
my\_db \= my\_client\["db\_name"\] | |
\# 连贯 collection\_name 汇合,Mongodb 里汇合就相当于 Mysql 里的表 | |
my\_collection \= my\_client\["collection\_name"\] | |
datas \= my\_collection.find() \# 查问 | |
for x in datas : | |
print(x) |
c . Python 与 Sqlite
\# 应用前先装置 sqlite3 模块:pip install sqlite3 | |
''' | |
sqlite 数据库和后面两种数据库不一样,它是一个本地数据库 | |
也就是说数据间接存在本地,不依赖服务器 | |
''' | |
\# 导入 sqlite3 模块 | |
import sqlite3 | |
\# 连贯数据库,参数阐明:这里的参数就是数据文件的地址 | |
conn \= sqlite3.connect('test.db') | |
#应用 cursor()办法创立一个游标对象 | |
c \= conn.cursor() | |
#应用 execute()办法执行 SQL 语句 | |
cursor \= c.execute("SELECT \* from test\_table") | |
for row in cursor: | |
print(row) | |
#敞开游标和数据库的连贯 | |
c.close() | |
conn.close() |
三、送你的话
保持 and 致力:终有所获。
如果文章对你有帮忙的话,点个赞再走吧