· 7 years ago · Oct 06, 2018, 11:24 AM
1engine = sqlalchemy.create_engine(url)
2
3df = pd.DataFrame({
4 "eid": [1,2],
5 "f_i": [123, 1231],
6 "f_i_arr": [[123], [0]],
7 "f_53": ["2013/12/1","2013/12/1",],
8 "f_53a": [["2013/12/1"], ["2013/12/1"],],
9})
10
11with engine.connect() as con:
12 con.execute("""
13 DROP TABLE IF EXISTS public.test;
14 CREATE TABLE public.test
15 (
16 eid integer NOT NULL,
17 f_i INTEGER NULL,
18 f_i_arr INTEGER NULL,
19 f_53 DATE NULL,
20 f_53a DATE[] NULL,
21 PRIMARY KEY(eid)
22 );;
23 """)
24 df.to_sql("test", con, if_exists='append')
25
26^
27sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) column "f_53a" is of type date[] but expression is of type text[]
28LINE 1: ..._53, f_53a, f_i, f_i_arr) VALUES (1, '2013/12/1', ARRAY['201...
29 ^
30HINT: You will need to rewrite or cast the expression.
31 [SQL: 'INSERT INTO test (eid, f_53, f_53a, f_i, f_i_arr) VALUES (%(eid)s, %(f_53)s, %(f_53a)s, %(f_i)s, %(f_i_arr)s)'] [parameters: ({'f_53': '2013/12/1', 'f_53a': ['2013/12/1', '2013/12/1'], 'f_i_arr': [123], 'eid': 1, 'f_i': 123}, {'f_53': '2013/12/1', 'f_53a': ['2013/12/1', '2013/12/1'], 'f_i_arr': [0], 'eid': 2, 'f_i': 1231})]
32
33with engine.connect() as con:
34 con.execute("""
35 DROP TABLE IF EXISTS public.test;
36 CREATE TABLE public.test
37 (
38 eid integer NOT NULL,
39 f_i INTEGER NULL,
40 f_ia INTEGER[] NULL,
41 f_iaa INTEGER[][] NULL,
42 f_d DATE NULL,
43 f_da DATE[] NULL,
44 f_daa DATE[][] NULL,
45 PRIMARY KEY(eid)
46 );
47 """)
48
49
50 d = pd.to_datetime("2013/12/1")
51 i = 99
52 df = pd.DataFrame({
53 "eid": [1,2],
54
55 "f_i": [i,i],
56 "f_ia": [None, [i,i]],
57 "f_iaa": [[[i,i],[i,i]], None],
58
59 "f_d": [d,d],
60 "f_da": [[d,d],None],
61 "f_daa": [[[d,d],[d,d]],None],
62 })
63 df.to_sql("test", con, if_exists='append', index=None)