将预定的日期时间值插入SQL表

时间:2017-02-07 22:49:56

标签: python sql sql-server datetime pymssql

问题:如果给出以下代码,如何在MS SQL服务器中插入日期时间值?

上下文

我在Python中有一个2-D列表(即列表列表),我想将其上传到Microsoft SQL Server 2008中的表。对于这个项目,我使用的是Python的pymssql包。每个列表中的每个值都是一个字符串,除了第一个元素,它是一个日期时间值。 以下是我的代码的读取方式:

import pymssql

db_connect = pymssql.connect( # these are just generic names
    server = server_name,
    user = db_usr,
    password = db_pwd,
    database = db_name
    )

my_cursor = db_connect.cursor()
for individual_list in list_of_lists:
    # the first value in the paranthesis should be datetime 
    my_cursor.execute("INSERT INTO [DB_Table_Name] VALUES (%s, %s, %s, %s, %s, %s, %s, %s)", tuple(individual_list))
    db_connect.commit()

python解释器很难插入我的日期时间值。我知道目前我有%s并且它是字符串格式化程序,但我不确定我应该将datetime用于什么,这是数据库的第一列格式化为。

“列表列表”看起来像这样(在每个列表转换为元组之后):

[(datetime.datetime(2012, 4, 1), '1', '4.1', 'hip', 'A1', 'J. Smith', 'B123', 'XYZ'),...]

以下是表格的外观图示:

+-----------+------+------+--------+-------+-----------+---------+---------+
|    date   | step | data |  type  |   ID  |  contact  | notif.  | program |
+-----------+------+------+--------+-------+-----------+---------+---------+
|2012-04-01 |   1  | 4.1  |   hip  |   A1  | J. Smith  |   B123  |   XYZ   |
|2012-09-05 |   2  | 5.1  |   hip  |   A9  | B. Armst  |   B123  |   ABC   |
|2012-01-16 |   5  | 9.0  | horray |   C6  | F. Bayes  |   P995  |   XYZ   |
+-----------+------+------+--------+-------+-----------+---------+---------+

提前谢谢你。

1 个答案:

答案 0 :(得分:0)

我会尝试在插入之前将日期时间格式化为“yyyymmdd hh:mm:ss”。你正在做什么SQL将解析字符串,所以我也将构建整个字符串,然后将字符串作为变量插入。见下文

for individual_list in list_of_lists:
    # the first value in the parentheses should be datetime 
    date_time = individual_list[0].strftime("%Y%m%d %H:%M:%S")
    insert_str = "INSERT INTO [DB_Table_Name] VALUES (" + str(date_time) + "),(" + str(individual_list[1]) + ");"
    print insert_str
    my_cursor.execute(insert_str)
    db_connect.commit()

我为粗略的python道歉,但只要所有字段都匹配,SQL就应该喜欢那个insert语句。如果不是,您可能需要在insert语句中指定这些值所在的字段。

如果有效,请告诉我。