MySQL에 Python datetime.datetime 개체 삽입
MySQL 테이블에 날짜 열이 있습니다.삽입하고 싶다datetime.datetime()
이 컬럼에 오브젝트를 입력합니다.execute 스테이트먼트에서는 무엇을 사용해야 합니까?
시도했습니다.
now = datetime.datetime(2009,5,5)
cursor.execute("INSERT INTO table
(name, id, datecolumn) VALUES (%s, %s
, %s)",("name", 4,now))
다음과 같은 오류가 발생합니다."TypeError: not all arguments converted during string formatting"
대신 뭘 쓰면 좋을까요?%s
?
시간 필드의 경우 다음을 사용합니다.
import time
time.strftime('%Y-%m-%d %H:%M:%S')
생각합니다strftime
에도 적용되다datetime
.
날짜 열 값 주위에 따옴표가 필요하기 때문에 TypeError가 표시될 가능성이 높습니다.
시험:
now = datetime.datetime(2009, 5, 5)
cursor.execute("INSERT INTO table (name, id, datecolumn) VALUES (%s, %s, '%s')",
("name", 4, now))
포맷에 관해서는 위의 명령어(밀리초 포함)와 다음 명령어로 성공하였습니다.
now.strftime('%Y-%m-%d %H:%M:%S')
이게 도움이 됐으면 좋겠다.
사용해보십시오.now.date()
을 얻다Date
보다 반대하다DateTime
.
이것이 동작하지 않는 경우는, 그것을 문자열로 변환합니다.
now = datetime.datetime(2009,5,5)
str_now = now.date().isoformat()
cursor.execute('INSERT INTO table (name, id, datecolumn) VALUES (%s,%s,%s)', ('name',4,str_now))
Python 메서드를 사용합니다. 여기서 format ='%Y-%m-%d %H:%M:%S'
.
import datetime
now = datetime.datetime.utcnow()
cursor.execute("INSERT INTO table (name, id, datecolumn) VALUES (%s, %s, %s)",
("name", 4, now.strftime('%Y-%m-%d %H:%M:%S')))
타임존
타임존이 문제가 될 경우 MySQL 타임존을 다음과 같이 UTC로 설정할 수 있습니다.
cursor.execute("SET time_zone = '+00:00'")
타임존은 Python으로 설정할 수 있습니다.
now = datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc)
MySQL 문서
MySQL은 다음 형식의 DATETIME 및 TIMESTAMP 값을 인식합니다.
'YYY-MM-DD HH'의 문자열로서:MM:SS' 또는 'YY-MM-DD HH:MM:SS' 형식입니다.여기서도 "완전" 구문을 사용할 수 있습니다. 날짜 부분 또는 시간 부분 사이의 구분자로 모든 구두점을 사용할 수 있습니다.예를 들어 '2012-12-31 11:30:45', '2012^12^31 11+30+45', '2012/12/31 11*30*45', '2012@12@31 11^30^45' 등가 된다.
날짜와 시간 부분과 소수 초 부분 사이에 인식되는 유일한 구분 기호는 소수점입니다.
날짜와 시간 부분은 공백이 아닌 T로 구분할 수 있습니다.예를 들어 '2012-12-31 11:30:45' '2012-12-31T11:30:45'는 동일합니다.
'YYYMMDDHHMMSS' 또는 'YYMMDDHHMMSS' 형식의 구분자가 없는 문자열로, 날짜로 의미가 있는 문자열입니다.예를 들어, '20070523091528' 및 '070523091528'은 '2007-05-23 09:15:28'로 해석되지만, '071122129015'는 불법(비논리적인 미세한 부분이 있음)이며 '0000-00 00:00:00'이 됩니다.
YYYMMDDHHMMSS 또는 YYMMDDHHMMSS 형식의 수치로서, 날짜로서 의미가 있는 경우.예를 들어 19830905132800 및 830905132800은 '1983-09-05 13:28:00'로 해석됩니다.
어떤 데이터베이스에 접속하고 있습니까?Oracle은 날짜 형식에 까다롭고 ISO 8601 형식을 좋아합니다.
**주의: MySQL에 접속되어 있는 것을 확인했습니다.날짜 형식을 지정하고 별도의 직접 SQL 호출로 테스트해 보십시오.
Python에서는 다음과 같은 ISO 날짜를 얻을 수 있습니다.
now.isoformat()
예를 들어 Oracle은 다음과 같은 날짜를 좋아합니다.
insert into x values(99, '31-may-09');
데이터베이스에 따라 Oracle인 경우 TO_DATE가 필요할 수 있습니다.
insert into x
values(99, to_date('2009/05/31:12:00:00AM', 'yyyy/mm/dd:hh:mi:ssam'));
TO_DATE의 일반적인 사용법은 다음과 같습니다.
TO_DATE(<string>, '<format>')
다른 데이터베이스를 사용하는 경우(커서를 보고 Oracle이 틀릴 수 있다고 생각했다), 날짜 형식 도구를 확인합니다.MySQL의 경우 DATE_FORMAT()이고 SQL Server는 CONVERT입니다.
또한 SQL Chemy와 같은 도구를 사용하면 이와 같은 차이를 제거하고 생활을 쉽게 할 수 있습니다.
python datetime.date(datetime.datetime)는 python datetime.datetime으로 지정합니다.(mysql, python 2.7, Ubuntu).[ ] published_date
변수 MySQL, python 변수 MySQL 입니다.publish_date
datetime.date
# make the record for the passed link info
sql_stmt = "INSERT INTO snippet_links (" + \
"link_headline, link_url, published_date, author, source, coco_id, link_id)" + \
"VALUES(%s, %s, %s, %s, %s, %s, %s) ;"
sql_data = ( title, link, str(publish_date), \
author, posted_by, \
str(coco_id), str(link_id) )
try:
dbc.execute(sql_stmt, sql_data )
except Exception, e:
...
dt= datetime.now()
query = """INSERT INTO table1(python_Date_col)
VALUES (%s)
"""
conn = ...... # Connection creating process
cur = conn.cursor()
cur.execute(query,(dt))
위의 코드는 "datetime.now()"가 문을 삽입하는 파라미터 값으로 "datetime.datetime(2014, 2, 11, 1, 16)"을 생성하기 때문에 실패합니다.
문자열 값을 제공하는 날짜/시간을 캡처하려면 다음 방법을 사용합니다.
dt= datetime.now().strftime("%Y%m%d%H%M%S")
변경 후 성공적으로 코드를 실행할 수 있었습니다.
t-sql에 삽입할 때
실패:
select CONVERT(datetime,'2019-09-13 09:04:35.823312',21)
이 기능은 다음과 같습니다.
select CONVERT(datetime,'2019-09-13 09:04:35.823',21)
간단한 방법:
regexp = re.compile(r'\.(\d{6})')
def to_splunk_iso(dt):
"""Converts the datetime object to Splunk isoformat string."""
# 6-digits string.
microseconds = regexp.search(dt).group(1)
return regexp.sub('.%d' % round(float(microseconds) / 1000), dt)
언급URL : https://stackoverflow.com/questions/1136437/inserting-a-python-datetime-datetime-object-into-mysql
'source' 카테고리의 다른 글
Java Regex 스레드는 안전한가요? (0) | 2023.02.06 |
---|---|
항상 range()보다 xrange()를 선호합니까? (0) | 2023.02.06 |
"접속 실패:php 함수의 'root'@'localhost' 사용자(암호: YES 사용)에 대한 액세스가 거부되었습니다. (0) | 2023.02.06 |
ubuntu 12.04의 nodejs 대 노드 (0) | 2023.02.06 |
CASE 및 GROUP BY 결과에서 새 열 만들기 (0) | 2023.02.06 |