小编Mil*_*dev的帖子

在SQLite中创建ENUM和类型

我必须将在Postgres中创建数据库的代码转换为SQLite.我被卡住了,因为SQLite不允许创建枚举或创建类型.我正在寻找解决这个问题的方法.

例如,想象一下我们在Postgres中:

CREATE TYPE AckStatusEnum AS ENUM (
'ACKNOWLEDGED','NOT_ACKNOWLEDGED','ERROR_RECEIVED','NOT_SENT'
);

CREATE TABLE ACK_EVENT(
...
    ACK_STATUS AckStatusEnum,
...
);

CREATE TYPE aggr_type AS (
...
    severity alertseverityenum ,
...
);
Run Code Online (Sandbox Code Playgroud)

"..."表示其他行.如何将其翻译成SQLite?如何创建一个ENUM类型,可以用于表格和其他类型?除了如何模拟这种类型的创建(它也应该可用于表和类型)?

sql sqlite postgresql enums

6
推荐指数
1
解决办法
7426
查看次数

在Npgsql中是否有任何SQLBulkCopy的等价物

经过一番搜索后,我找不到在Npgsql中从SQLClient中正确替换SQLBulkCopy.任何人都可以建议我像PostBSQL的SQLBulkCopy吗?我需要插入大约1000万个数据..我知道单个查询插入...

我只是为了比较而做测试.

任何建议表示赞赏.

c# sql-server postgresql npgsql

6
推荐指数
1
解决办法
2101
查看次数

Python +套接字

我必须创建连接服务器<=>客户端.我用这段代码:服务器:

import socket

HOST = 'localhost'
PORT = 50007      
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
    data = conn.recv(1024)
    if not data: break
    conn.send(data)
conn.close()
Run Code Online (Sandbox Code Playgroud)

客户:

import socket

HOST = 'localhost'   
PORT = 50007             
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send('Hello, world')
data = s.recv(1024)
s.close()
print 'Received', repr(data)
Run Code Online (Sandbox Code Playgroud)

它工作正常!但是如果在没有路由器的计算机上创建服务器.如果你有路由器,在服务器创建之前你应该在你的调制解调器上打开50007端口.如何在没有端口启用的所有计算机上创建服务器?Torrent客户以某种方式做到了.谢谢.

python sockets ports

5
推荐指数
1
解决办法
2089
查看次数

编写 PL/pgSQL 的更好方法?

是否有一个像 IDE 一样的工具来编写和调试 PL/pgSQL 函数,例如用于编写存储过程?

我发现使用 pgAdmin III 是一种挫折练习,因为错误消息通常非常神秘,而且事情有以神秘方式失败的习惯。

postgresql plpgsql

5
推荐指数
1
解决办法
5025
查看次数

通过PostgreSQL唯一地插入数据库

我的桌子

  question_id   |              title              |      user_id   |
+---------------+---------------------------------+----------------+
Run Code Online (Sandbox Code Playgroud)

它的类型是

                Column                 |            Type             |                            Modifiers                            
---------------------------------------+-----------------------------+-----------------------------------------------------------------
 question_id                           | integer                     | not null default nextval('questions_question_id_seq'::regclass)
 title                                 | character varying(256)      | 
 user_id                               | integer                     | 
Run Code Online (Sandbox Code Playgroud)

我跑

INSERT INTO questions VALUES (SERIAL, 'question title', 123);
Run Code Online (Sandbox Code Playgroud)

我收到有关使用SERIAL的错误.

如何通过PostgreSQL自动将问题添加到表中?

database postgresql

5
推荐指数
1
解决办法
1万
查看次数

如何为 Django 创建 ltree 数据类型?

如何为 Django 创建 Postgres ltree 数据类型?以及如何将它与 QuerySet 一起使用?(创建包装?如何?)

关于lree: http: //www.postgresql.org/docs/current/static/ltree.html

关于 Django 中的自定义字段:docs.djangoproject.com/en/1.2/howto/custom-model-fields/

PS 还有“Django Tree Libraries”,但 ltree 看起来更好..

django postgresql tree django-models django-queryset

5
推荐指数
2
解决办法
3370
查看次数

我可以在客户端使用PostgreSQL(pg)(express/node.js)

我想在客户端使用PostgreSQL.那可能吗?我有这个代码吗?

在我的server.js中

   var pg = require('pg');
Run Code Online (Sandbox Code Playgroud)

在我的客户端

     var conString = "postgres://postgres:pass@localhost/mydb";
     var client = new pg.Client(conString);
     client.connect();
     var query = client.query("SELECT * FROM users ");        
     query.on('row', function(row) {
             alert(row.name);
     });
Run Code Online (Sandbox Code Playgroud)

我尝试了这段代码但没有任何反应.虽然我可以有一个类似于此的代码,我连接PostgreSQL并在客户端脚本上使用查询.

javascript postgresql node.js express

5
推荐指数
1
解决办法
7427
查看次数

postgres公共架构的不安全默认值?

问题基本上归结为:如何在postgres上安全地创建新数据库,这意味着默认情况下,没有人对新数据库拥有任何权限,并且必须明确定义所有访问权限.

我尝试了互联网上的各种资源,但无法得到明确的答案.我在fedora 17 linux上使用postgres 9.1尝试了这个,但最终会在redhat 6.3上使用postgres 8.4.

过程:

  1. 安装postgres,运行initdb,启动服务器
  2. 与postgres超级用户本地连接
  3. 使用optionsb和createrole创建新用户u1
  4. 断开并重新连接为u1
  5. 创建数据库db1
  6. 创建用户u2
  7. 断开并重新连接为u2
  8. 在db1中创建表t1

我不希望最后一步成功.u2没有在db1上获得任何权限,并且在查询数据库或模式时也没有显示任何权限.根据我的理解,u2可以在db1上创建表,因为公共模式和内置公共角色的默认权限.如果我想撤销它们,我只能在数据库上这样做,但不能在模式上这样做,因为它是由postgres拥有的.所以最终我必须为我所创建的每个新数据库撤销超级用户的权限.我不能将它委托给数据库的所有者,我也不能忘记为每个新数据库执行此操作.

默认设置将允许每个用户在任何新数据库中垃圾邮件公共模式.这是危险的,因为其他用户可能默认处理公共模式而不检查表是否已存在,只使用某些陌生人拥有的现有表.

我怎样才能修复这些不安全的默认值?

security postgresql

5
推荐指数
2
解决办法
5706
查看次数

使用rubyrep进行PostgreSQL复制

我是rubyrep的新手,目前正在使用rubyrep-1.2.0版本进行PostgreSQL Master-Master复制.除bytea之外的所有数据类型都正在被正确复制.在复制bytea列时,似乎数据被转义两次.我正在使用postgreSQL9.2版本,我 在postgres配置中尝试了bytea_output ='hex'bytea_output ='escape'选项而没有任何运气.

left database bytea列值:

\xc30d0409030220f8eef5543ac6906cd234018e307bd602ca16a61e674a6c4368f8018b01c3ae3007ae0313a9e44dc661a97a61cc94032f3ed1921e5987e92ff723f674a903
Run Code Online (Sandbox Code Playgroud)

左侧的bytea数据被复制到右侧数据库:

\x5c3330335c3031355c3030345c3031315c3030335c3030325c3034305c3337305c3335365c3336355c3132345c3037325c3330365c3232305c3135345c3332325c3036345c3030315c3231365c3036305c3137335c3332365c3030325c3331325c3032365c3234365c3033365c3134375c3131325c3135345c3130335c3135305c3337305c3030315c3231335c3030315c3330335c3235365c3036305c3030375c3235365c3030335c3032335c3235315c3334345c3131355c3330365c3134315c3235315c3137325c3134315c3331345c3232345c3030335c3035375c3037365c3332315c3232325c3033365c3133315c3230375c3335315c3035375c3336375c3034335c3336365c3136345c3235315c303033 
Run Code Online (Sandbox Code Playgroud)

什么,我在rubyrep/postgresql配置中遗漏了吗?

postgresql replication jruby database-replication bytea

5
推荐指数
1
解决办法
753
查看次数

从 Cygwin 用 C 语言运行 PostgreSQL 客户端

我正在尝试通过 Cygwin 用 C 语言构建一个非常简单的 PostgreSQL 客户端。

这是我到目前为止所做的:

  • 我已经下载了 PostgreSQL 源代码版本 9.1.2(以匹配在我的服务器上运行的相同版本)
  • 我已经从 Cygwin 配置并编译了源代码。编译似乎进行得很顺利。
  • 据我所知,头文件在:
    • /cygdrive/c/workspace/src/postgresql-9.1.2/src/interfaces/libpq,和
    • /cygdrive/c/workspace/src/postgresql-9.1.2/src/include
  • 图书馆位于:
    • /cygdrive/c/workspace/src/postgresql-9.1.2/src/interfaces/libpq

从这里开始,我使用下面的 makefile 编译并链接了客户端程序:

testlibpq: testlibpq.c
    gcc -o testlibpq -I /cygdrive/c/workspace/src/postgresql-9.1.2/src/interfaces/libpq -I /cygdrive/c/workspace/src/postgresql-9.1.2/src/include -L /cygdrive/c/workspace/src/postgresql-9.1.2/src/interfaces/libpq testlibpq.c -Bstatic -lpq
Run Code Online (Sandbox Code Playgroud)

编译和链接成功,没有错误或警告。

但是,当我尝试运行该程序时,出现以下错误:

$ ./testlibpq
/cygdrive/c/Users/dleclair/Dropbox/denis/src/testlibpq/testlibpq.exe: error while loading shared libraries: cygpq.dll: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我还没有想出如何解决这个问题。任何指针将不胜感激。哦,还有一件事,我找到了 cygpq.dll 所在的文件夹,并将我的 LD_LIBRARY_PATH 设置为指向它,但它仍然给了我相同的结果。

dleclair@dleclair-win7l ~/Dropbox/denis/src/testlibpq
$ ls /cygdrive/c/workspace/src/postgresql-9.1.2/src/interfaces/libpq
bcc32.mak      encnames.o    fe-connect.o  fe-misc.o       fe-protocol3.o   ip.o           libpq-events.c  md5.c                   pgstrcasecmp.c  pqsignal.c       thread.o
blibpqdll.def …
Run Code Online (Sandbox Code Playgroud)

postgresql cygwin libpq

5
推荐指数
1
解决办法
820
查看次数