返回介绍

01. Python 工具

02. Python 基础

03. Numpy

04. Scipy

05. Python 进阶

06. Matplotlib

07. 使用其他语言进行扩展

08. 面向对象编程

09. Theano 基础

10. 有趣的第三方模块

11. 有用的工具

12. Pandas

SQL 数据库

发布于 2022-09-03 20:46:14 字数 4896 浏览 0 评论 0 收藏 0

Python 提供了一系列标准的数据库的 API,这里我们介绍 sqlite 数据库的用法,其他的数据库的用法大同小异:

In [1]:

import sqlite3 as db

首先我们要建立或者连接到一个数据库上:

In [2]:

connection = db.connect("my_database.sqlite")

不同的数据库有着不同的连接方法,例如 cx-oracle 数据库的链接方式为:

connection = db.connect(username, password, host, port,  'XE')

一旦建立连接,我们可以利用它的 cursor() 来执行 SQL 语句:

In [3]:

cursor = connection.cursor()
cursor.execute("""CREATE TABLE IF NOT EXISTS orders(
 order_id TEXT PRIMARY KEY,
 date TEXT,
 symbol TEXT,
 quantity INTEGER,
 price NUMBER)""")
cursor.execute("""INSERT INTO orders VALUES
 ('A0001', '2013-12-01', 'AAPL', 1000, 203.4)""")
connection.commit()

不过为了安全起见,一般不将数据内容写入字符串再传入,而是使用这样的方式:

In [4]:

orders = [
          ("A0002","2013-12-01","MSFT",1500,167.5),
          ("A0003","2013-12-02","GOOG",1500,167.5)
]
cursor.executemany("""INSERT INTO orders VALUES
 (?, ?, ?, ?, ?)""", orders)
connection.commit()

cx-oracle 数据库使用不同的方式:

cursor.executemany("""INSERT INTO orders VALUES
(:order_id, :date, :symbol, :quantity, :price)""",
orders)

查看支持的数据库格式:

In [5]:

db.paramstyle

Out[5]:

'qmark'

query 语句执行之后,我们需要进行 commit,否则数据库将不会接受这些变化,如果想撤销某个 commit,可以使用 rollback() 方法撤销到上一次 commit() 的结果:

try:
    ... # perform some operations
except:
    connection.rollback()
    raise
else:
    connection.commit()

使用 SELECT 语句对数据库进行查询:

In [6]:

stock = 'MSFT'
cursor.execute("""SELECT *
 FROM orders
 WHERE symbol=?
 ORDER BY quantity""", (stock,))
for row in cursor:
    print row
(u'A0002', u'2013-12-01', u'MSFT', 1500, 167.5)

cursor.fetchone() 返回下一条内容, cursor.fetchall() 返回所有查询到的内容组成的列表(可能非常大):

In [7]:

stock = 'AAPL'
cursor.execute("""SELECT *
 FROM orders
 WHERE symbol=?
 ORDER BY quantity""", (stock,))
cursor.fetchall()

Out[7]:

[(u'A0001', u'2013-12-01', u'AAPL', 1000, 203.4)]

关闭数据库:

In [8]:

cursor.close()
connection.close()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文