截至今天(2014年5月9日),我正在使用pandas
开发版。
# 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)
print c.fetchone()
但是,据我所知,pandas
界面要求我做
from pandas.io import sql
eng = sqlalchemy.create_engine('sqlite:////path/to/file.db')
sql.read_sql("SELECT * FROM mytable WHERE myid = {0};".format(myid), eng)
我是否必须直接使用SQLAlchemy
来避免注入字符串,还是有一个更好的选择我还没想过呢?
答案 0 :(得分:0)
Pandas
还有一个使用sqlite3
模块中的参数的执行方法。
sql.execute(sql, con, cur=None, params=None, flavor='sqlite')
Execute the given SQL query using the provided connection object.
...
params : list or tuple, optional
List of parameters to pass to execute method.
不幸的是,read_sql
方法中没有很多功能,例如parse_dates
,并将结果作为DataFrame
返回,包含列名,索引等。
修改强>
哦,params
参数在read_sql
方法中有效! :)