Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commita1949ae

Browse files
fix: avoid floating point for timestamp ininsert_rows (#393)
* fix: timestamp precision in insert_rows* fix: remove floating point coversion and add datetime format* fix: add formatted string in unit tests
1 parent273d58e commita1949ae

File tree

3 files changed

+18
-17
lines changed

3 files changed

+18
-17
lines changed

‎google/cloud/bigquery/_helpers.py‎

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
fromgoogle.cloud._helpersimportUTC
2424
fromgoogle.cloud._helpersimport_date_from_iso8601_date
2525
fromgoogle.cloud._helpersimport_datetime_from_microseconds
26-
fromgoogle.cloud._helpersimport_microseconds_from_datetime
26+
fromgoogle.cloud._helpersimport_RFC3339_MICROS
2727
fromgoogle.cloud._helpersimport_RFC3339_NO_FRACTION
2828
fromgoogle.cloud._helpersimport_to_bytes
2929

@@ -313,12 +313,9 @@ def _timestamp_to_json_parameter(value):
313313

314314

315315
def_timestamp_to_json_row(value):
316-
"""Coerce 'value' to an JSON-compatible representation.
317-
318-
This version returns floating-point seconds value used in row data.
319-
"""
316+
"""Coerce 'value' to an JSON-compatible representation."""
320317
ifisinstance(value,datetime.datetime):
321-
value=_microseconds_from_datetime(value)*1e-6
318+
value=value.strftime(_RFC3339_MICROS)
322319
returnvalue
323320

324321

‎tests/unit/test__helpers.py‎

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -728,10 +728,14 @@ def test_w_string(self):
728728
self.assertEqual(self._call_fut(ZULU),ZULU)
729729

730730
deftest_w_datetime(self):
731-
fromgoogle.cloud._helpersimport_microseconds_from_datetime
732-
733731
when=datetime.datetime(2016,12,20,15,58,27,339328)
734-
self.assertEqual(self._call_fut(when),_microseconds_from_datetime(when)/1e6)
732+
self.assertEqual(self._call_fut(when),"2016-12-20T15:58:27.339328Z")
733+
734+
deftest_w_datetime_w_utc_zone(self):
735+
fromgoogle.cloud._helpersimportUTC
736+
737+
when=datetime.datetime(2020,11,17,1,6,52,353795,tzinfo=UTC)
738+
self.assertEqual(self._call_fut(when),"2020-11-17T01:06:52.353795Z")
735739

736740

737741
classTest_datetime_to_json(unittest.TestCase):

‎tests/unit/test_client.py‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5804,7 +5804,7 @@ def test_insert_rows_w_schema(self):
58045804
importdatetime
58055805
fromgoogle.cloud._helpersimportUTC
58065806
fromgoogle.cloud._helpersimport_datetime_to_rfc3339
5807-
fromgoogle.cloud._helpersimport_microseconds_from_datetime
5807+
fromgoogle.cloud._helpersimport_RFC3339_MICROS
58085808
fromgoogle.cloud.bigquery.schemaimportSchemaField
58095809

58105810
WHEN_TS=1437767599.006
@@ -5834,7 +5834,7 @@ def _row_data(row):
58345834
result= {"full_name":row[0],"age":str(row[1])}
58355835
joined=row[2]
58365836
ifisinstance(joined,datetime.datetime):
5837-
joined=_microseconds_from_datetime(joined)*1e-6
5837+
joined=joined.strftime(_RFC3339_MICROS)
58385838
ifjoinedisnotNone:
58395839
result["joined"]=joined
58405840
returnresult
@@ -5864,7 +5864,7 @@ def test_insert_rows_w_list_of_dictionaries(self):
58645864
importdatetime
58655865
fromgoogle.cloud._helpersimportUTC
58665866
fromgoogle.cloud._helpersimport_datetime_to_rfc3339
5867-
fromgoogle.cloud._helpersimport_microseconds_from_datetime
5867+
fromgoogle.cloud._helpersimport_RFC3339_MICROS
58685868
fromgoogle.cloud.bigquery.schemaimportSchemaField
58695869
fromgoogle.cloud.bigquery.tableimportTable
58705870

@@ -5910,7 +5910,7 @@ def _row_data(row):
59105910
row=copy.deepcopy(row)
59115911
delrow["joined"]
59125912
elifisinstance(joined,datetime.datetime):
5913-
row["joined"]=_microseconds_from_datetime(joined)*1e-6
5913+
row["joined"]=joined.strftime(_RFC3339_MICROS)
59145914
row["age"]=str(row["age"])
59155915
returnrow
59165916

@@ -6109,16 +6109,16 @@ def test_insert_rows_w_repeated_fields(self):
61096109
{
61106110
"score":"12",
61116111
"times": [
6112-
1543665600.0,#2018-12-01 12:00 UTC
6113-
1543669200.0,#2018-12-01 13:00 UTC
6112+
"2018-12-01T12:00:00.000000Z",
6113+
"2018-12-01T13:00:00.000000Z",
61146114
],
61156115
"distances": [1.25,2.5],
61166116
},
61176117
{
61186118
"score":"13",
61196119
"times": [
6120-
1543752000.0,#2018-12-02 12:00 UTC
6121-
1543755600.0,#2018-12-02 13:00 UTC
6120+
"2018-12-02T12:00:00.000000Z",
6121+
"2018-12-02T13:00:00.000000Z",
61226122
],
61236123
"distances": [-1.25,-2.5],
61246124
},

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp