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 的语法:
df.to_sql(‘data’, con=conn, if_exists=’replace’, index=False)
论据:
- 数据:表名
- 缺点:连接
- 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)