首页 >  Python开发 >  【教程】在Python环境中如何连接SQL数据库?

【教程】在Python环境中如何连接SQL数据库?

发布时间:2019-6-4 16:59阅读量:40
摘要: 数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。数据库系统具有如下特点:
【教程】在Python环境中如何连接SQL数据库?


1、用Python连接数据库PostgreSQL

PostgreSQL是最先进并且应用最广泛的关系型数据库管理系统之一。它非常受欢迎的原因有很多,其中包括它是开源的、它的可扩展性以及它处理许多不同类型的应用程序和不同负载的能力。

用Python可以轻松地建立到PostgreSQL数据库的连接。PostgreSQL有很多Python驱动程序,其中“psycopg”是最流行的一个,它的当前版本是psycopg2

我们可以用psycopg2模块将Postgres与Python连在一起。psycopg2是一个用于Python的Postgres数据库适配器。首先,需要用pip命令进行安装。

  1. $ pip3 install psycopg2 

【注】这里用的版本是Python 3.5,因此用的是pip3而不是pip进行安装。

安装好之后,我们就可以用它进行数据库连接操作。首先,应该创建一个表示数据库的连接对象con。接着,创建一个游标对象cur来执行SQL语句。

  1. import psycopg2 
  2. con = psycopg2.connect(database="postgres"user="postgres"password="Kaliakakya", host="127.0.0.1", port="5432")  
  3. print("Database opened successfully"
  4. cur = con.cursor()  

database:要连接的数据库名称。

user:用于身份验证的用户名,默认为"postgres"。

password:用户的数据库密码,自己设置的。

host:数据库服务器的地址,如域名、“localhost”或IP地址。

port:端口,默认值为5432。

我们也可以用sqlalchemy库连接,代码如下:

  1. from sqlalchemy import create_engine 
  2. engine = create_engine('postgresql://postgres:password@localhost:5432/postgres'

2、SQL数据库操作

建表

我们用SQL语句CREATE TABLE在Python中创建Postgres表,先用上面提到的方法建立数据库连接,再调用属于连接对象的cursor()方法来创建游标对象,该游标对象用于实际执行命令。

然后调用cursor对象的execute()方法来帮助创建表。最后,我们需要提交con.commit()并关闭连接con.close()。“提交”连接告诉驱动程序将命令发送到数据库,这一步很重要。

这里我们创建两个表,“沪深300指数日线行情”和“沪深股票qfq日线行情”。

  1. import psycopg2 
  2. con = psycopg2.connect(database="postgres"user="postgres"password="", host="127.0.0.1", port="5432"
  3. print("Database opened successfully"
  4. cur = con.cursor() 
  5. cur.execute("""CREATE TABLE 沪深300指数日线行情 
  6.  (ts_code VARCHAR(10) NOT NULL
  7.  trade_date DATE NOT NULL
  8.  open_p NUMERIC DEFAULT 0, 
  9.  high_p NUMERIC DEFAULT 0, 
  10.  low_p NUMERIC DEFAULT 0, 
  11.  close_p NUMERIC DEFAULT 0, 
  12.  pre_close NUMERIC DEFAULT 0, 
  13.  pct_chg NUMERIC DEFAULT 0, 
  14.  PRIMARY KEY (ts_code, trade_date) 
  15.  ) ; """) 
  16. print("Table created successfully"
  17. con.commit() 
  18. con.close() 

简单说明一下,VARCHAR(10)、DATE、NUMERIC代表的是数据类型,NOT NULL代表非空约束,DEFAULT 0表示将默认值设置为0,PRIMARY KEY代表主键,用于唯一标识数据库表中的一行数据。

看到如下输出,就表示表已创建成功。同理,可创建另一个表“沪深股票qfq日线行情”。

  1. Database opened successfully  
  2. Table created successfully  

插入数据

既然表已经创建成功,我们就可以开始插入数据了,先从tushare.pro上面获取沪深300指数日线行情数据,用INSERT INTO这个SQL语句插入。

  1. import psycopg2 
  2. import pandas as pd 
  3. import tushare as ts 
  4. con = psycopg2.connect(database="postgres"user="postgres"password="", host="127.0.0.1", port="5432"
  5. print("Database opened successfully"
  6. cur = con.cursor() 
  7. pro = ts.pro_api() 
  8. df = pro.index_daily(ts_code='399300.SZ', start_date='20190501', end_date='20190531') # 单位:涨跌幅(%), 成交量(手)、成交额(千元) 
  9. ts_code = df['ts_code'].tolist() 
  10. trade_date = df['trade_date'].tolist() 
  11. open_p = df[
12

鲜花

握手

雷人

路过

鸡蛋
最新图文推荐
  • 2
  • 3
发表评论

最新评论

图文推荐
热门排行
现在注册,免费体验多款产品