SQLite Tutorial

*思考题

  1. 如何和 SQLite 数据库建立连接?
  2. 如何在 SQLite 中建立游标对象?
  3. 如何借助游标执行 SQL 语句?

Python Doc

SQLite不需要单独的server进程;一些应用使用SQLite作为内部数据存储。

Python自带SQLite,不需要安装

import sqlite3
conn = sqlite3.connect('example.db') # 生成Connection object代表数据库

c = conn.cursor() # 指针,可用来执行语句

# Create table
c.execute('''CREATE TABLE stocks
             (date text, trans text, symbol text, qty real, price real)''')
# Insert a row
c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")

# Save (commit) the changes
conn.commit()

# We can also close the connection if we are done with it.
# Just be sure any changes have been committed or they will be lost.
conn.close()

运行SQL语句需要Python中的变量。注意不要用字符串进行操作,这样非常不安全 funny example from xkcd

要使用DB-API参数替代。需要参数值的时候用?作为占位符,在将tuple of value作为execute()方法的第二个参数传入。

# NEVER DO THIS! -- INSECURE!
symbol = 'RHAT'
c.execute("SELECT * FROM stocks WHERE symbol = '%s'" % symbol)

# DO THIS INSTEAD.
t = ('RHAT',)
c.execute('SELECT * FROM stocks WHERE symbol=?', t)

# Larger example that inserts many records at a time
purchases = [('2006-03-28', 'BUY', 'IBM', 1000, 45.00),
             ('2006-04-05', 'BUY', 'MSFT', 1000, 72.00),
             ('2006-04-06', 'SELL', 'IBM', 500, 53.00),
            ]
c.executemany('INSERT INTO stocks VALUES (?,?,?,?,?)', purchases)


c.execute('UPDATE city_weather8 SET last_search=?, weather=?, temp=?, query=? WHERE city=?',
    (record[1:], record[0]))

提取数据fetchone(), fetchall()

廖雪峰SQLite教程

基本概念

SQLite是一种嵌入式数据库,它的数据库就是一个文件。SQLite本身由C语言所写,体积很小,经常被集成到各种程序中,包括iOS或者Android的APP中。

一个数据库中有多个表,表是数据库中存放关系数据的集合,表和表之间通过外键关联。

  1. 操作数据之前,要连接到数据库 - connection.
  2. 连接到数据库后,要打开游标 - cursor,通过游标执行SQL语句,获得执行结果.
cursor.rowcount
values = cursor.fetchall()

注意打开的conncursor用后一定要关闭

出现的问题

  1. 查处行的时候用题大夫一直报错syntax error near record 常识直接将值输入是可以的 ```python c.execute('''INSERT INTO city_weather4 VALUES (?,?,?,?,?),
     record''')`
    

c.execute('''INSERT INTO city_weather4 VALUES ( '北京','2017-02-17T00:05:00+08:00','晴','3',1)''')

> GEEZE~折腾了好久,发现是`record`不应包含在`‘’‘’里面....

```python
c.execute('INSERT INTO city_weather4 VALUES (?,?,?,?,?)',
        record)`
  1. 创建表格只需要一次,之后使用不能够每次创建;如何判断一个表格是否存在在进行创建? CREATE TABLE IF NOT EXISTS

Change Log

2017.02.20 Initial Draft

results matching ""

    No results matching ""