📜  Python Psycopg2 - 插入字符串数组

📅  最后修改于: 2022-05-13 01:55:52.209000             🧑  作者: Mango

Python Psycopg2 - 插入字符串数组

在本文中,我们将研究在Python编程语言的 pyscopg2/Postgres 中插入字符串数组的多种方法。

方法一:朴素的方法

在这个例子中,我们使用 psycopg2.connect() 方法建立一个到教室数据库的连接,然后我们使用 conn.cursor() 方法创建一个游标。然后,我们通过执行 SQL 插入命令,使用使用占位符 %s 的 execute() 方法直接插入列表的值。我们最终使用 fetchall() 方法获取所有行。

使用的 CSV:

Python3
# importing packages
import psycopg2
 
# forming connection
conn = psycopg2.connect(
    database="Classroom",
    user='postgres',
    password='sherlockedisi',
    host='127.0.0.1',
    port='5432'
)
 
conn.autocommit = True
 
# creating a cursor
cursor = conn.cursor()
 
# list of rows to be inserted
values = [17, 'samuel', 95]
 
# executing the sql statement
cursor.execute("INSERT INTO classroom VALUES(%s,%s,%s) ", values)
 
# select statement to display output
sql1 = '''select * from classroom;'''
 
# executing sql statement
cursor.execute(sql1)
 
# fetching rows
for i in cursor.fetchall():
    print(i)
 
# committing changes
conn.commit()
 
# closing connection
conn.close()


Python3
# import packages
import psycopg2
import pandas as pd
from sqlalchemy import create_engine
 
 
# creating a connection
conn_string = 'postgres://postgres:sherlockedisi@127.0.0.1/data1'
 
db = create_engine(conn_string)
conn = db.connect()
 
#creating a table
sql = '''CREATE TABLE details(Name char(20),
         Age int);'''
 
 
# initialise data of lists.
data = {'Name':['sam', 'richie', 'harry'],
        'Age':[18, 20, 19]}
 
# Create DataFrame
df = pd.DataFrame(data)
df.to_sql('data', con=conn, if_exists='replace', index=False)
conn = psycopg2.connect(conn_string
                        )
conn.autocommit = True
cursor = conn.cursor()
 
# fetching data
sql1='''select * from data;'''
cursor.execute(sql1)
for i in cursor.fetchall():
    print(i)
 
# conn.commit()
conn.close()


输出:

插入前:

插入后:

方法二:通过字典插入数组

我们可以通过将字符串存储在字典中来插入字符串数组。字典可以进一步更新到我们创建的表或已经存在的表中。在本例中,我们使用 to_sql() 方法。

我们使用 to_sql() 方法将 pandas 数据框插入到我们的数据库表中。

to_sql 的语法:

论据:

  • 数据:表名
  • 缺点:连接
  • if_exists:如果表已经存在我们要应用的函数。例如:'append' 帮助我们添加数据而不是替换数据。
  • 指数:真或假

Python3

# import packages
import psycopg2
import pandas as pd
from sqlalchemy import create_engine
 
 
# creating a connection
conn_string = 'postgres://postgres:sherlockedisi@127.0.0.1/data1'
 
db = create_engine(conn_string)
conn = db.connect()
 
#creating a table
sql = '''CREATE TABLE details(Name char(20),
         Age int);'''
 
 
# initialise data of lists.
data = {'Name':['sam', 'richie', 'harry'],
        'Age':[18, 20, 19]}
 
# Create DataFrame
df = pd.DataFrame(data)
df.to_sql('data', con=conn, if_exists='replace', index=False)
conn = psycopg2.connect(conn_string
                        )
conn.autocommit = True
cursor = conn.cursor()
 
# fetching data
sql1='''select * from data;'''
cursor.execute(sql1)
for i in cursor.fetchall():
    print(i)
 
# conn.commit()
conn.close()

输出:

('sam', 18)
('richie', 20)
('harry', 19)