📜  import sql inside hide sql (1)

📅  最后修改于: 2023-12-03 15:01:23.336000             🧑  作者: Mango

在Python中隐藏SQL语句并使用Import SQL

当我们在Python程序中需要连接数据库执行SQL语句时,通常会对敏感信息进行隐藏,例如用户名、密码、数据库地址等。这样做可以防止恶意攻击者获取这些敏感信息,从而保证数据安全。

在Python中,我们可以使用 dotenv 库来隐藏敏感信息,即将这些敏感信息储存在一个名为 .env 的文件中,然后通过 os.getenv() 函数来访问这些敏感信息。例如:

import os
from dotenv import load_dotenv

load_dotenv()

DB_USER = os.getenv("DB_USER")
DB_PASSWORD = os.getenv("DB_PASSWORD")
DB_HOST = os.getenv("DB_HOST")

以上代码将读取 .env 文件中 DB_USERDB_PASSWORDDB_HOST 三个变量的值,并将它们赋给 Python 变量 DB_USERDB_PASSWORDDB_HOST

一旦我们获得了这些敏感信息,我们就可以使用 pymysqlpsycopg2 等库连接数据库执行 SQL 语句。例如,以下是使用 psycopg2 库执行 SQL 语句的示例代码:

import psycopg2

conn = psycopg2.connect(
    user=DB_USER,
    password=DB_PASSWORD,
    host=DB_HOST,
    port="5432",
    database="my_database"
)

cur = conn.cursor()

cur.execute("SELECT * FROM my_table")

rows = cur.fetchall()

for row in rows:
    print(row)

cur.close()
conn.close()

在这个示例中,我们使用 psycopg2.connect() 函数连接了一个名为 my_database 的 PostgreSQL 数据库,并获取了名为 my_table 的表中的所有行。通过调用 cur.fetchall() 方法,我们可以将所有的行转换为 Python 元组,并使用 for 循环将每个行都打印出来。最后,我们关闭了游标和数据库连接。

此外,我们还可以使用 import_sql 这个 Python 库来隐藏 SQL 语句。import_sql 允许我们将 SQL 语句储存在一个独立的 .sql 文件中,然后通过 import_sql 函数来导入这些 SQL 语句。例如:

from import_sql import import_sql

import_sql("example.sql")

conn = psycopg2.connect(
    user=DB_USER,
    password=DB_PASSWORD,
    host=DB_HOST,
    port="5432",
    database="my_database"
)

cur = conn.cursor()

cur.execute("SELECT * FROM my_table")

rows = cur.fetchall()

for row in rows:
    print(row)

cur.close()
conn.close()

在这个示例中,我们通过调用 import_sql("example.sql") 函数来导入一个名为 example.sql 的 SQL 语句文件。该文件中包含了一些 SQL 语句,例如:

SELECT * FROM my_table;

通过使用 import_sql 函数,我们可以很方便地将 SQL 语句直接嵌入到 Python 代码中,同时又不需要暴露敏感信息。