+1 cho câu trả lời của NettaB nhưng chỉ muốn thêm rằng nếu tất cả các tệp tiff của bạn nằm trong cùng một thư mục, bạn sẽ có thể thực hiện việc này bằng một lệnh duy nhất (có thể từ dòng lệnh hoặc thông qua quy trình con trong Python):
# Set environment variables for database connection
set PGHOST=db.qgiscloud.com
set PGPORT=5432
set PGUSER=enter_qgiscloud_user
set PGPASSWORD=enter_qgiscloud_pw
set PGDATABASE=enter_qgiscloud_db
# Call the raster2pqsql utility
raster2pgsql -s 3857 -C -F -t auto C:/qgis_cloud_data/*.tif schema.target_table | psql
Điều này sẽ tạo một bảng mới có tên là lược.target_table và đẩy dữ liệu vào đó. Nếu bạn cần thêm một số thông tin về các công tắc để sử dụng, trang này rất hữu ích - và bao gồm một số ví dụ.
Với triển khai Python, bạn không cần sử dụng Psycopg trừ khi bạn có kế hoạch thực hiện các truy vấn SQL - nếu bạn chỉ tải dữ liệu ngay trong bạn thì chỉ cần tiện ích raster2pgsql. Vì vậy, mã của bạn có thể được điều chỉnh để:
import os
import subprocess
db_name = 'enter_qgiscloud_db'
db_host = 'db.qgiscloud.com'
db_user = 'enter_qgiscloud_user'
db_password = 'enter_qgiscloud_pw'
# Set pg password environment variable - others can be included in the statement
os.environ['PGPASSWORD'] = db_password
# Build command string
cmd = 'raster2pgsql -s 3857 -C -F -t auto C:/qgis_cloud_data/*.tif schema.target_table | psql -U {} -d {} -h {} -p 5432'.format(db_user,db_name,db_host)
# Execute
subprocess.call(cmd, shell=True)