Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pandas/sqlalchemy/pybigquery指定';BIGINT';而不是';INT64';对于整型列_Python_Pandas_Sqlalchemy_Google Bigquery_Pybigquery - Fatal编程技术网

Python Pandas/sqlalchemy/pybigquery指定';BIGINT';而不是';INT64';对于整型列

Python Pandas/sqlalchemy/pybigquery指定';BIGINT';而不是';INT64';对于整型列,python,pandas,sqlalchemy,google-bigquery,pybigquery,Python,Pandas,Sqlalchemy,Google Bigquery,Pybigquery,我正在尝试使用sqlalchemy(以及幕后的pybigquery)将pandas数据帧复制到BigQuery表。但是,我得到了一个错误,因为sqlalchemy试图创建类型为BIGINT的列,但BigQuery只识别INT64 下面是一些重现错误的代码: import sqlalchemy as sqa, pandas as pd db_engine = sqa.create_engine('bigquery://my-project/my_dataset', echo=True) df =

我正在尝试使用sqlalchemy(以及幕后的pybigquery)将pandas数据帧复制到BigQuery表。但是,我得到了一个错误,因为sqlalchemy试图创建类型为
BIGINT
的列,但BigQuery只识别
INT64

下面是一些重现错误的代码:

import sqlalchemy as sqa, pandas as pd
db_engine = sqa.create_engine('bigquery://my-project/my_dataset', echo=True)
df = pd.DataFrame({'a': [1, 2], 'b': ['red', 'green']})
df.to_sql('test', db_engine, if_exists='replace', index=False)
这将向BigQuery发送以下SQL代码:

CREATE TABLE `test` (
    `a` BIGINT, 
    `b` STRING
)
这将导致错误:
未找到类型:BIGINT

奇怪的是,如果我明确指定列
a
应被视为整数(通过将
dtype={'a':sqa.types.integer,'b':sqa.types.String}
添加到最后一行),那么sqlalchemy会要求BigQuery创建一个
INT64
列,一切正常。但我不希望为每一列硬编码数据类型


在我看来,这就像熊猫或炼金术中的一只虫子。我试图诊断它,但在他们的代码中迷失了方向。有人知道解决这个问题的好方法,或者知道我可以在哪里找到错误来创建拉请求吗?

听起来像pybigquery中的错误,但是为什么您要使用
来处理sql
而不是
来处理gbq
?将是提交问题或请求的适当位置。我正在使用
来执行sql
,因为我正在将基于postgresql的系统迁移到BigQuery,希望只更改sqlalchemy连接对象,而不必更改所有代码。这使我的选项在将来对不同的数据库开放。我将在某个时候深入研究pybigquery代码,或者向他们提出一个问题。这似乎是一个非常基本的功能,应该可以正常工作。