RDKit支持PostgreSQL配置

RDKit支持PostgreSQL配置
最新回答
遠看男神近看男神經

2023-07-26 03:24:45

RDKit支持PostgreSQL配置,可以通过以下步骤实现:

  • 安装RDKit的PostgreSQL支持

    使用conda命令安装RDKit的PostgreSQL扩展:

    conda install -c rdkit rdkit-postgresql
  • 安装psycopg2

    psycopg2是Python语言的PostgreSQL数据库接口,可以通过pip安装:

    pip install psycopg2
  • 为数据库创建扩展

    使用psql命令为特定的数据库(如drugbank)创建RDKit扩展:

    psql -c 'create extension rdkit' drugbank
  • 示例代码

    以下是一个Python脚本示例,展示了如何使用RDKit和PostgreSQL进行交互:

    #!/usr/bin/python3from rdkit import Chemimport psycopg2 as ps# 连接到PostgreSQL数据库c = ps.connect(dbname='drugbank', user='aspirin', host='127.0.0.1', password='aspirin12369', port="5432")cursor = c.cursor()# 执行SQL查询cursor.execute("select version()")reply = cursor.fetchall()print(reply)# 创建schema和表cursor.execute("drop schema if exists drugbank cascade")cursor.execute("create schema drugbank")cursor.execute("""create table drugbank.drugbank( id serial primary key, drugbank_id text, smiles text, hba integer, hbd integer, mw float, logp float);""")cursor.execute("select * from drugbank.drugbank")print(cursor.fetchall())# 从SDF文件读取分子数据并插入到数据库supp = Chem.SDMolSupplier("drugbank.sdf")drugbank = [mol for mol in supp if mol]query = "insert into drugbank.drugbank (smiles, drugbank_id) values %s" % ((', '.join(["('%s','%s')" % (Chem.MolToSmiles(mol), mol.GetProp('DRUGBANK_ID')) for mol in drugbank])))cursor.execute(query)print(query[:1000])# 查询数据库cursor.execute("select count(*) from drugbank.drugbank")print(cursor.fetchall(), len(drugbank))cursor.execute("select * from drugbank.drugbank limit 10")print(cursor.fetchall())cursor.execute("select * from drugbank.drugbank where id > 500 and id < 600 limit 10;")print(cursor.fetchall())# 提交事务c.commit()
  • 注意事项

    确保PostgreSQL服务正在运行,并且数据库用户有足够的权限执行上述操作。

    在执行SQL命令时,注意SQL注入的风险,特别是在动态生成SQL语句时。

    确保RDKit和PostgreSQL的版本兼容,以避免潜在的问题。

通过以上步骤,您可以在PostgreSQL中配置RDKit支持,并使用Python脚本与数据库进行交互,实现化学信息的存储和查询。