pandas Python,postgresql,psycopg2 getting a Sqlite3 error. Not using sqlite3

xcitsw88  于 2023-11-15  发布在  Python
关注(0)|答案(2)|浏览(97)

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'

字符串

fnx2tebb

fnx2tebb1#

在从源代码编译Python之前,请尝试安装sqlite dev工具。请检查:Missing sqlite3 after Python3 compile

km0tfn4u

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。

相关问题