在 Python 中将日期变量设置为 SQL 查询
Set a date variable to SQL query in Python
我想在 python 中进行 sql 查询。我可以使用 cx_oracle 连接数据库 python:
# Build connection
conn_str = u'username/password@host:1521/sid'
conn = cx_Oracle.connect(conn_str)
现在我正在尝试使用 Python 中的 SQL 查询从数据库中检索数据:
sql_select_statement = """SELECT * FROM TABLE
WHERE DATE BETWEEN '20-oct-2017' AND '30-oct-2017'"""
假设我们不知道开始日期,我们只有一个名为 starting_time 的日期变量,它的值是日期时间 %m/%d/%Y。另外,ending_time 是昨天,我想将我的 SQL 查询修改为:
sql_select_statement = """SELECT * FROM TABLE
WHERE DATE BETWEEN '20-oct-2017' AND sysdate-1"""
df = pd.read_sql(sql_select_statement, conn)
它可以工作并生成一个新的 df,但是如何用变量 starting_time 替换“20-oct-2017”?它在 sql 查询中,并且是日期时间格式,因此像 'd%' % 变量这样的一般 python 方法不起作用。如何解决这个问题呢?谢谢!
考虑 SQLAlchemy to connect pandas and use the params argument of pandas.read_sql
将变量绑定到 SQL 语句:
from sqlalchemy import create_engine
engine = create_engine("username/password@host:1521/sid")
sql_select_statement = "SELECT * FROM TABLE WHERE DATE BETWEEN :my_date AND sysdate-1"
my_var = '20-oct-2017'
df = pd.read_sql(sql_select_statement, engine, params={'my_date':my_var})
或者,继续使用带有参数化的原始连接:
sql_select_statement = "SELECT * FROM TABLE WHERE DATE BETWEEN :my_date AND sysdate-1"
my_var = '20-oct-2017'
df = pd.read_sql(sql_select_statement, conn, params={'my_date':my_var})
我想在 python 中进行 sql 查询。我可以使用 cx_oracle 连接数据库 python:
# Build connection
conn_str = u'username/password@host:1521/sid'
conn = cx_Oracle.connect(conn_str)
现在我正在尝试使用 Python 中的 SQL 查询从数据库中检索数据:
sql_select_statement = """SELECT * FROM TABLE
WHERE DATE BETWEEN '20-oct-2017' AND '30-oct-2017'"""
假设我们不知道开始日期,我们只有一个名为 starting_time 的日期变量,它的值是日期时间 %m/%d/%Y。另外,ending_time 是昨天,我想将我的 SQL 查询修改为:
sql_select_statement = """SELECT * FROM TABLE
WHERE DATE BETWEEN '20-oct-2017' AND sysdate-1"""
df = pd.read_sql(sql_select_statement, conn)
它可以工作并生成一个新的 df,但是如何用变量 starting_time 替换“20-oct-2017”?它在 sql 查询中,并且是日期时间格式,因此像 'd%' % 变量这样的一般 python 方法不起作用。如何解决这个问题呢?谢谢!
考虑 SQLAlchemy to connect pandas and use the params argument of pandas.read_sql
将变量绑定到 SQL 语句:
from sqlalchemy import create_engine
engine = create_engine("username/password@host:1521/sid")
sql_select_statement = "SELECT * FROM TABLE WHERE DATE BETWEEN :my_date AND sysdate-1"
my_var = '20-oct-2017'
df = pd.read_sql(sql_select_statement, engine, params={'my_date':my_var})
或者,继续使用带有参数化的原始连接:
sql_select_statement = "SELECT * FROM TABLE WHERE DATE BETWEEN :my_date AND sysdate-1"
my_var = '20-oct-2017'
df = pd.read_sql(sql_select_statement, conn, params={'my_date':my_var})