下面是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()
希望这个攻略可以对你有所帮助。