python - Psycopg2 无法创建表
问题描述
在 Jupiter notebook 中,我能够使用 Psycopg2 创建数据库。但不知何故,我无法在其中创建 Table 并存储元素。
import psycopg2
from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT
con = psycopg2.connect("user=postgres password='abc'");
con.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT);
cursor = con.cursor();
name_Database = "socialmedia";
sqlCreateDatabase = "create database "+name_Database+";"
cursor.execute(sqlCreateDatabase);
使用上面的代码,我可以从 psql(windows 命令提示符)中看到名为“socialmedia”的数据库。
但是使用下面的代码,我无法从 psql 中看到名为“test_table”的表。
import psycopg2
# Open a DB session
dbSession = psycopg2.connect("dbname='socialmedia' user='postgres' password='abc'");
# Open a database cursor
dbCursor = dbSession.cursor();
# SQL statement to create a table
sqlCreateTable = "CREATE TABLE test_table(id bigint, cityname varchar(128), latitude numeric, longitude numeric);";
# Execute CREATE TABLE command
dbCursor.execute(sqlCreateTable);
# Insert statements
sqlInsertRow1 = "INSERT INTO test_table values(1, 'New York City', 40.73, -73.93)";
sqlInsertRow2 = "INSERT INTO test_table values(2, 'San Francisco', 37.733, -122.446)";
# Insert statement
dbCursor.execute(sqlInsertRow1);
dbCursor.execute(sqlInsertRow2);
# Select statement
sqlSelect = "select * from test_table";
dbCursor.execute(sqlSelect);
rows = dbCursor.fetchall();
# Print rows
for row in rows:
print(row);
我只能从 Jupyter notebook 获取元素,但不能从 psql 获取元素。似乎元素是临时存储的。
如何从 psql 查看表和元素并永久保留元素?
解决方案
dbCursor.execute('commit')
我在您问题的第二部分中没有看到任何内容?
您提供了一个使用 AUTOCOMMIT 的示例,该示例有效,并且您在问为什么results are stored temporarly
不使用 AUTOCOMMIT 时?好吧,他们没有承诺!
它们仅针对当前会话存储,这就是您可以从 Jupyter 会话中获取它的原因
还:
- 你不需要在你的 python 代码中添加分号
- 你不需要在你的 SQL 代码中加上分号(除非你执行多个语句,这里不是这种情况)
推荐阅读
- keycloak - 在创建 keycloak 用户时收到带有 {"error":"unknown_error"} 消息的 403 错误
- qt - 如何从中裁剪 QLabel 中的图像以进行舍入?
- python - 如何在以命令行参数作为输入的vscode中调试py文件?
- tinymce - 如何删除 Tiny MCE 中的字数?
- java - 从终端运行 .jar 文件 (macOS Big Sur)
- javascript - 无法读取未定义的属性“createPromiseCapability”
- jquery - Jquery easyui datagrid从codeigniter控制器加载数据
- r - 用 R 计算:婴儿的年龄和天数
- java - 导入 javafx.css.StyleConverterImp 时出错
- maven - 詹金斯 - 是否可以为失败的黄瓜测试设定 X 百分比的目标?