Pandas 读写sqlite数据库

  • Post category:Python

下面是Pandas读写sqlite数据库的完整攻略:

导入Python包

首先,我们需要导入一些Python的包,包括pandas、sqlite3、os等。具体代码如下:

import pandas as pd
import sqlite3
import os

连接sqlite数据库

接下来,我们需要连接sqlite数据库,创建数据库连接对象,并创建相应的游标对象。代码如下:

# 创建数据库连接对象
conn = sqlite3.connect('test.db')

# 创建游标对象
cursor = conn.cursor()

创建表格

在连接sqlite数据库之后,我们需要创建表格,并插入数据。这里我们以一个学生成绩表格为例,具体代码如下:

# 创建学生成绩表格
cursor.execute('''
CREATE TABLE IF NOT EXISTS student_score (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT,
    score INTEGER
)
''')

# 插入数据
cursor.execute('INSERT INTO student_score (name, score) VALUES (?, ?)', ('Tom', 88))
cursor.execute('INSERT INTO student_score (name, score) VALUES (?, ?)', ('Jerry', 92))
cursor.execute('INSERT INTO student_score (name, score) VALUES (?, ?)', ('Mike', 85))
cursor.execute('INSERT INTO student_score (name, score) VALUES (?, ?)', ('John', 90))

# 提交事务
conn.commit()

上述代码中,我们使用SQLite的SQL语句创建了一个名为student_score的表格,并向表格中插入了四条记录,分别记录了四个学生的姓名和成绩。

读取数据

接下来,我们需要读取sqlite数据库中的数据,并转换成Pandas的DataFrame格式。具体代码如下:

# 读取数据
df = pd.read_sql_query('SELECT * FROM student_score', conn)

# 打印DataFrame数据
print(df.head())

上述代码中,我们使用Pandas中的read_sql_query函数读取了student_score表格的所有数据,并将其转换成了Pandas的DataFrame格式。最终,我们使用head()函数展示了DataFrame的前5行数据。

写入数据

最后,我们需要将Pandas的DataFrame数据保存到sqlite数据库中。具体代码如下:

# 将DataFrame数据写入sqlite数据库
df.to_sql('student_score', conn, if_exists='replace', index=False)

# 读取数据
df_new = pd.read_sql_query('SELECT * FROM student_score', conn)

# 打印DataFrame数据
print(df_new.head())

上述代码中,我们使用Pandas中的to_sql函数将DataFrame数据写入了名为student_score的表格中,并设置if_exists=’replace’参数,表示如果student_score表格已经存在,则替换原有的表格。最后,我们使用了read_sql_query函数重新读取了student_score表格的数据,并展示了它的前5行数据。

完整代码

最终,整个Pandas读写sqlite数据库的代码如下:

import pandas as pd
import sqlite3
import os

# 创建数据库连接对象
conn = sqlite3.connect('test.db')

# 创建游标对象
cursor = conn.cursor()

# 创建学生成绩表格
cursor.execute('''
CREATE TABLE IF NOT EXISTS student_score (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT,
    score INTEGER
)
''')

# 插入数据
cursor.execute('INSERT INTO student_score (name, score) VALUES (?, ?)', ('Tom', 88))
cursor.execute('INSERT INTO student_score (name, score) VALUES (?, ?)', ('Jerry', 92))
cursor.execute('INSERT INTO student_score (name, score) VALUES (?, ?)', ('Mike', 85))
cursor.execute('INSERT INTO student_score (name, score) VALUES (?, ?)', ('John', 90))

# 提交事务
conn.commit()

# 读取数据
df = pd.read_sql_query('SELECT * FROM student_score', conn)

# 打印DataFrame数据
print(df.head())

# 将DataFrame数据写入sqlite数据库
df.to_sql('student_score', conn, if_exists='replace', index=False)

# 读取数据
df_new = pd.read_sql_query('SELECT * FROM student_score', conn)

# 打印DataFrame数据
print(df_new.head())

# 关闭数据库连接
conn.close()

希望这个攻略可以对你有所帮助。