Python

    openGauss数据库提供了对Psycopg2特性的支持,并且支持psycopg2通过SSL模式链接。

    表 1 Psycopg支持平台

      1. 从上下载编译好的psycopg2压缩包。

      2. 解压版本对应的驱动包,将psycopg2拷贝到python安装目录的第三方包文件夹(即site-packages目录)下。

      3. 确保psycopg2目录权限至少为755,以免调用时提示文件由于权限问题无法访问。

      4. 对于非数据库用户,需要将解压后的lib目录,配置在LD_LIBRARY_PATH环境变量中。

    • 在创建数据库连接之前,需要先加载如下数据库驱动程序:

    连接数据库

    以下Python代码显示了如何连接到现有的数据库。 如果数据库不存在,那么它将自动创建,最后将返回一个数据库对象。

    1. #!/usr/bin/python
    2. import psycopg2
    3. conn = psycopg2.connect(database="testdb", user="openGauss", password="xxxxxxxx", host="127.0.0.1", port="26000")

    上述代码中,加粗字体请根据具体情况替换。在这里指定使用testdb作为数据库名称。

    当执行上述程序时,它将在数据库testdb中创建COMPANY表。

    插入操作

    以下Python程序显示了如何在上述示例中创建的COMPANY表中创建记录:

    1. #!/usr/bin/python
    2. import psycopg2
    3. conn = psycopg2.connect(database="testdb", user="openGauss", password="xxxxxxxx", host="127.0.0.1", port="26000")
    4. cur = conn.cursor()
    5. cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
    6. VALUES (1, 'Paul', 32, 'California', 20000.00 )");
    7. cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
    8. VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");
    9. cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
    10. VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");
    11. cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
    12. conn.commit()
    13. conn.close()

    当执行上述程序时,它将在COMPANY表中创建/插入给定的记录。

    以下Python程序显示了如何从上述示例中创建的COMPANY表中获取和显示记录:

    1. #!/usr/bin/python
    2. import psycopg2
    3. conn = psycopg2.connect(database="testdb", user="openGauss", password="xxxxxxxx", host="127.0.0.1", port="26000")
    4. cur.execute("SELECT id, name, address, salary from COMPANY")
    5. rows = cur.fetchall()
    6. for row in rows:
    7. print("ID = ", row[0])
    8. print("NAME = ", row[1])
    9. print("ADDRESS = ", row[2])
    10. print("SALARY = ", row[3])
    11. conn.close()

    执行上述程序时,会返回以下结果:

    更新操作

    以下Python代码显示了如何使用UPDATE语句来更新任何记录,然后从COMPANY表中获取并显示更新的记录:

    1. #!/usr/bin/python
    2. import psycopg2
    3. conn = psycopg2.connect(database="testdb", user="openGauss", password="xxxxxxxx", host="127.0.0.1", port="26000")
    4. cur = conn.cursor()
    5. cur.execute("UPDATE COMPANY set SALARY = 25000.00 where ID=1")
    6. conn.commit
    7. cur.execute("SELECT id, name, address, salary from COMPANY")
    8. rows = cur.fetchall()
    9. for row in rows:
    10. print("ID = ", row[0])
    11. print("ADDRESS = ", row[2])
    12. print("SALARY = ", row[3])
    13. conn.close()

    执行上述程序时,会产生以下结果:

    1. ID =, 1
    2. ADDRESS =, California
    3. SALARY =, 25000.0
    4. ID =, 2
    5. NAME =, Allen
    6. ADDRESS =, Texas
    7. SALARY =, 15000.0
    8. ID =, 3
    9. NAME =, Teddy
    10. ADDRESS =, Norway
    11. SALARY =, 20000.0
    12. ID =, 4
    13. NAME =, Mark
    14. ADDRESS =, Rich-Mond
    15. SALARY =, 65000.0

    以下Python代码显示了如何使用DELETE语句来删除记录,然后从COMPANY表中获取并显示剩余的记录:

    1. ID =, 1
    2. NAME =, Paul
    3. ADDRESS =, California
    4. SALARY =, 20000.0
    5. ID =, 3
    6. NAME =, Teddy
    7. ADDRESS =, Norway
    8. SALARY =, 20000.0
    9. ID =, 4
    10. NAME =, Mark
    11. SALARY =, 65000.0