使用Python的DB-API时,只要搞清楚Connection和Cursor对象,打开后一定记得关闭,就可以放心地使用。
使用Cursor对象执行insert,update,delete语句时,执行结果由rowcount返回影响的行数,就可以拿到执行结果。
使用Cursor对象执行select语句时,通过featchall()可以拿到结果集。结果集是一个list,每个元素都是一个tuple,对应一行记录。
如果SQL语句带有参数,那么需要把参数按照位置传递给execute()方法,有几个?占位符就必须对应几个参数,例如:
conn = sqlite3.connect('test.db')
cursor = conn.cursor()
# 执行查询语句:
cursor.execute('select * from user where id=?', ('1',))
<sqlite3.Cursor object at 0x10f8aa340>
# 获得查询结果集:
values = cursor.fetchall()
values
[('1', 'Michael')]
cursor.close()
conn.close()
cursor.execute('select * from user where name=? and pwd=?', ('abc', 'password'))
read_sql接受两个参数,一个是sql语句,这个你可能需要单独学习;一个是con(数据库连接)、read_sql直接返回一个DataFrame对象。我们还可以使用index_col参数来规定将那一列数据设置为index。
columns:要选取的列。一般没啥用,因为在sql命令里面一般就指定要选择的列了
with lite.connect('stg_statistic.db') as conn:
la_mv_chg=pd.read_sql('SELECT * FROM daily_mv_chg',con=conn)