使用 pyodbc 将日期时间插入 MS SQL 表

问题描述 投票:0回答:3

我正在尝试使用 pyodbc 将日期时间值插入到 MS SQL Server 表中。 如果我手动做,比如:

cursor.execute("""insert into currentvalue(value1,currentdatetime)
                                    values(55,'2014-06-27 16:42:48.533')""")

我完全没有问题,但是当我尝试做的时候:

currenttime = str(datetime.datetime.now())
cursor.execute("""insert into currentvalue(value1,currentdatetime) 
                                    values(55,"""+ currenttime+")")

我收到这个错误:

SQL 服务器 '07' 附近的语法不正确,我认为是日期和开始时间之后的数字。

我也试过这个:

currenttime = "'"+str(datetime.datetime.now())+"'"

现在出现这个错误:

从字符串转换日期和/或时间时转换失败。

python sql-server pyodbc mssql-jdbc
3个回答
18
投票

删除日期时间到字符串的转换,而是使用参数:

....
cursor.execute("insert into currentvalue (value1,currentdatetime) values(?,?)",
               (value1, datetime.datetime.now()))
....

8
投票

您还可以使用 datetime.strftime() 以您需要的方式将日期时间对象转换为字符串。 str(datetime) 是个坏主意。

currenttime = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f")
cursor.execute("""insert into currentvalue(value1,currentdatetime) values(55,"""+ currenttime+")")


0
投票

您可以添加单引号:
当前时间 = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
sql_statement = f""" 插入当前值(value1,currentdatetime)值(55,'{currenttime}') """
光标.执行()

© www.soinside.com 2019 - 2024. All rights reserved.