AWS EC2 linux 2 Python3.10代码试图插入到PostgreSQL数据库中。得到一个Sqlite3错误消息。
生成下面的消息
即使我没有使用Sqlite。我在虚拟环境中运行。它是激活的。
Python 3.10在EC2 Linux 2示例上。
PostgreSQL的版本是14.7。
我的requirements.txt是:
pandas>=1.3.0
numpy>=1.21.6
psycopg2-binary>=2.9.6
pyrrow>= 12.0
OpenPyxl>=3.1.2
fastparquet>=0.8.1
watchdog>=2.1.
parquet 工具
PySpark
SQLAlchemy
点表
(.venv)@ec2-user:~/fluence-test-bench/.venv/include$ pip list软件包版本
boto3 1.26.146
下载1.29.146
colorama 0.4.6
cramjam 2.6.2
游标1.3.5
et-xmlfile 1.1.0
快速Parquet2023.4.0
fspec 2023.5.0
Greenlet 2.0.2
光环0.0.29
jmespath 1.0.1
对数符号0.0.14
numpy 1.24.3
OpenPyxl 3.1.2
Package 23.1
Pandas2.0.2
parquet 工具0.2.14
pip 23.1.2
psycopg2-binary 2.9.6
0.10.9.7
Pyarrow 12.0.0
pyspark 3.4.0
python-dateutil 2.8.2
pytz 2023.3
s3transfer 0.6.1
安装工具65.5.0
六1.16.0
旋转器0.0.24
列表0.8.10
termcolor 2.3.0
节俭0.13.0
typing_extensions 4.6.3
tzdata 2023.3
1.26.16下载
看门狗3.0.0
import pandas as pd
import psycopg2 as sql
from sqlalchemy import create_engine
from sqlalchemy.sql import text
conn_string = 'postgresql://...amazonaws.com/...'
db = create_engine(conn_string)
conn2 = db.connect()
df = pd.read_parquet("files_by_count/Panda_1.parquet")
conn2.execute(text('select * from sensor_data_in;'))
df.to_sql('sensor_data_in',con=conn2,if_exists='append',index=False)
conn2.close()```
>Traceback (most recent call last):
File "/home/ec2-user/fluence-test-bench/parq.py", line 24, in <module>
df.to_sql('sensor_data_in',con=conn,if_exists='append',index=False)
File "/home/ec2-user/fluence-test-bench/.venv/lib/python3.10/site-packages/pandas/core/generic.py", line 2878, in to_sql
return sql.to_sql(
File "/home/ec2-user/fluence-test-bench/.venv/lib/python3.10/site-packages/pandas/io/sql.py", line 768, in to_sql
with pandasSQL_builder(con, schema=schema, need_transaction=True) as pandas_sql:
File "/home/ec2-user/fluence-test-bench/.venv/lib/python3.10/site-packages/pandas/io/sql.py", line 821, in pandasSQL_builder
import sqlite3
File "/usr/local/lib/python3.10/sqlite3/__init__.py", line 57, in <module>
from sqlite3.dbapi2 import *
File "/usr/local/lib/python3.10/sqlite3/dbapi2.py", line 27, in <module>
from _sqlite3 import *
ModuleNotFoundError: No module named '_sqlite3'
字符串
2条答案
按热度按时间fnx2tebb1#
在从源代码编译Python之前,请尝试安装sqlite dev工具。请检查:Missing sqlite3 after Python3 compile
km0tfn4u2#
从回溯中的这一行
文件“/home/ec2-user/fluence-test-bench/.venv/lib/python3.10/site-packages/pandas/io/sql.py”,第821行,在pandasSQL_builder import sqlite3中
我们可以看到Pandas正在尝试导入Python的
sqlite3
模块。这个导入是无条件的; Pandas总是会尝试导入sqlite3
,因为如果没有为to_sql
和类似方法提供连接,它会尝试创建一个SQLite连接作为后备。您示例上的Python构建似乎不包含
sqlite3
。根据示例上的OS/Python安装,您需要使用OS包管理器安装Python的
sqlite3
模块,或者安装SQLite及其头文件,然后重新编译Python。