gpt4 book ai didi

python - 使用python从sql查询中的文本文件调用日期

转载 作者:太空宇宙 更新时间:2023-11-03 21:06:32 26 4
gpt4 key购买 nike

我正在尝试使用 python 将外部文本文件中的日期输入到 sql 查询中,下面是我的代码:

import cx_Oracle
import pandas as pd
import numpy as np
dsn_tns = cx_Oracle.makedsn(ip, port,service_name = SERVICE_NAME)

db = cx_Oracle.connect('username', 'password', dsn_tns)
curs = db.cursor()

with open("Date.txt") as file:
log=file.read().splitlines()
import datetime
var1=datetime.datetime.strptime(log[0], "%d-%b-%Y %H:%M:%S").strftime("%d-%b-%Y %H:%M:%S")
var2=datetime.datetime.strptime(log[1], "%d-%b-%Y %H:%M:%S").strftime("%d-%b-%Y %H:%M:%S")

query = curs.execute("""SELECT * from table_name where cr_date >= TO_DATE(%s,'DD-MON-YYYY HH24:MI:SS') AND cr_date < to_date(%s,'DD-MON-YYYY HH24:MI:SS')""", (var1, var2))

from pandas import DataFrame
df = DataFrame(query.fetchall())

这里我将查询与 Oracle 连接,然后尝试将 Date.txt 中的日期插入到 SQL 查询中,其中包括如下两个日期:

27-DEC-2018 00:00:00
26-JAN-2019 00:00:00

然后我想将结果保存到数据框 df 中,但在从文本文件插入日期时出现以下错误。

Traceback (most recent call last):
File "C:\Users\ab\Desktop\oracle_connect.py", line 24, in <module>
AND cr_date < to_date(%s,'DD-MON-YYYY HH24:MI:SS')""", (var1, var2))
cx_Oracle.DatabaseError: ORA-01036: illegal variable name/number

请建议我运行此代码需要进行哪些更改。还要让我知道我的数据框 df 是否也拉动列标题,因为目前我正在与其他代码单独插入列标题。提前致谢

最佳答案

cx_oracle 采用“:1、:2、:3”或字典形式的绑定(bind)变量。

尝试将绑定(bind)变量的“%s”位置更改为“:1”和“:2”。这就是我一直在 oracle 中进行绑定(bind)的方式。但不确定它会解决任何问题。当然去掉“s”。

你也可以使用字典来做到这一点,并将其设置为“:val1”和“:val2”,然后传入字典而不是像{“val1”:“something”,“val2”:“something2”这样的列表“}

关于python - 使用python从sql查询中的文本文件调用日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55359468/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com